剑指 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;
    }
}
 
                     
                     
                        
                        