算法:双指针+快排划分
用双指针的快排划分思想来实现奇数和偶数的划分。只需跑一趟,就能让奇数在前面,偶数在后面
复杂度
$O(N)$
代码
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
if(nums.size() == 0) return nums;
int l = 0, r = nums.size()-1;
while(l < r){
while(l < r && nums[l] % 2 == 1) l ++;
while(l < r && nums[r] % 2 == 0) r --;
if(l < r) swap(nums[l], nums[r]);
}
return nums;
}
};