思路:
这道题我们可以用双指针来做,无非就是拿两个变量来头尾推进,具体可看代码,很好理解。
代码:
class Solution {
public:
/*
荷兰三色旗问题解
*/
void sortColors(vector<int>& nums) {
int a,b,c;
a = b = 0;
c = nums.size()-1;
while(a<=c){
if(nums[a]==0){ //如果是0,就要和头的变量进行交换
swap(nums[a++],nums[b++]);
}
else if(nums[a]==2) //如果是2,就要和尾的变量进行交换
swap(nums[a],nums[c--]);
else
++a;
}
}
};