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


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

解题思路

这题很简单,用左右指针即可。

注意啊:如果要求调整后元素的相对位置不能改变,那就要用冒泡排序

代码

class Solution {
    public int[] exchange(int[] nums) {
        if (nums.length == 0 || nums == null) {
            return new int[]{};
        }
        int left = 0;
        int right = nums.length - 1;
        int temp = 0;

        while (left <= right) {
            if (left == right) {//这题l、r重合了就可以结束了
                break;
            }

            // 指针 i 遇到奇数则执行 i = i + 1 跳过,直到找到偶数;
            while (left < right && (nums[left] % 2) == 1) {
                left++;
            }
            // 指针 j 遇到偶数则执行 j = j - 1 跳过,直到找到奇数;
            while (left < right && (nums[right] % 2) == 0) {
                right--;
            }
            temp = nums[left];
            nums[left] = nums[right];
            nums[right] = temp;
        }
        return nums;
    }
}

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录