922 按奇偶排序数组 II

·   ·   ·   ·

  ·   ·


题目链接

922. 按奇偶排序数组 II

分析

双指针,从头开始,找到第一个偶数位上的奇数和第一个奇数位上的偶数交换,重复过程即可

代码实现

class Solution {
public:
    vector<int> sortArrayByParityII(vector<int>& nums) {
        int i = 0, j = 1;
        while(i < nums.size()) {
            if(!(nums[i] & 1)) {
                i += 2;
            }
            else if(nums[j] & 1) {
                j += 2;
            }
            else {
                swap(nums[i], nums[j]);
                i += 2;
                j += 2;
            }
        }
        return nums;
    }
};

复杂度

  • 时间复杂度:$O(n)$
  • 空间复杂度:$O(1)$