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

吞佛童子2022年10月10日
  • algorithm
  • Array
小于 1 分钟

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

难度: 🌕

问题描述

img_15.png


解法

class Solution {
    public int[] exchange(int[] nums) {
        // 思路:
        // 双指针
        int len = nums.length;
        if(len <= 1) {
            return nums;
        }
        // len > 1
        int left = 0; // left 左边的全部是奇数,left 为偶数,等待右边的奇数和其替换
        while(left < len) {
            int cur = nums[left];
            if((cur & 1) == 1) {
                left ++;
            } else {
                break;
            }
        }
        int right = left;
        while(right < len) {
            // 找到奇数
            int cur = nums[right];
            if((cur & 1) == 1) {
                swap(nums, left, right);
                left ++;
                right ++;
            } else {
                right ++;
            }
        }
        return nums;
    }

    private void swap(int[] nums, int a, int b) {
        int tmp = nums[a];
        nums[a] = nums[b];
        nums[b] = tmp;
    }
}

输出

img_14.png

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