题目

题解

双指针,左找到偶数,右找到奇数,然后交换,继续循环

  • 时间复杂度$O(n)$
  • 空间复杂度$O(1)$,原地交换
class Solution {
public:
    vector<int> exchange(vector<int>& nums) {
        int p1=0, p2 = nums.size()-1;
        while(p1<p2){
            while(p1<p2 && nums[p1]%2 != 0) p1++;
            while(p1<p2 && nums[p2]%2 == 0) p2--;
            swap(nums[p1], nums[p2]);
        }
        return nums;
    }
};