剑指offer 21. 调整数组顺序使奇数位于偶数前面

剑指offer 21. 调整数组顺序使奇数位于偶数前面

题目描述

在这里插入图片描述

解题思路

头尾双指针

nums[0...oddIndex] 存奇数,nums[evenIndex...nums.length - 1] 存偶数

class Solution {
    
    
    public int[] exchange(int[] nums) {
    
    
        if (nums == null || nums.length == 0) return nums;
        //双指针,nums[0...oddIndex]存奇数,nums[evenIndex...nums.length - 1]存偶数
        int oddIndex = 0, evenIndex = nums.length - 1;

        while (oddIndex < evenIndex) {
    
    
            //如果是偶数的话,那就交换
            if ((nums[oddIndex] & 0x01) == 0) {
    
    
                int temp = nums[oddIndex];
                nums[oddIndex] = nums[evenIndex];
                nums[evenIndex] = temp;
                evenIndex--;   //偶数指针移动
            } else {
    
    
                //如果是奇数的话,不用交换,直接移动指针
                oddIndex++;
            }
        }
        return nums;
    }
}

猜你喜欢

转载自blog.csdn.net/cys975900334/article/details/115014347