🌗 922. 按奇偶排序数组 II

吞佛童子2022年6月20日
  • algorithm
  • array
小于 1 分钟

🌗 922. 按奇偶排序数组 II

难度: 🌗

问题描述

img_2.png


解法

class Solution {
    public int[] sortArrayByParityII(int[] nums) {
        // 思路:
        // 双指针法 - 遇到不符合条件的原地交换
        int len = nums.length;
        int left = 1;
        int right = 0;
        while(left < len && right < len) {
            // 从左跳跃找奇数下标不为奇数的下标
            while(left < len && (nums[left] & 1) == 1) {
                left += 2;
            }
            while(right < len && (nums[right] & 1) == 0) {
                right += 2;
            }
            if(left < len) {
                swap(nums, left, right);
            }
        }
        return nums;
    }

    private void swap(int[] nums, int left, int right) {
        int tmp = nums[left];
        nums[left] = nums[right];
        nums[right] = tmp;
    }
}

输出

img_3.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou