原题目:https://leetcode-cn.com/problems/sort-colors/
思路:
使用双指针,l记录当前左边到的位置,r记录右边到的位置
为0,移动到前面。l++,cur++;
为2移动到后面。r--。(此时不可以cur++,因为nums[r]使我们没有碰到过得元素)
1时进行下一个元素的判断。cur++
代码:
class Solution {
public:
void sortColors(vector<int>& nums) {
int l=0,r= nums.size()-1;
int cur=0;
while(cur <= r){
if(nums[cur]==0){
swap(nums[cur], nums[l]);
l++; cur++;
}
else if(nums[cur] == 2){
swap(nums[cur],nums[r]);
r--;
}
else cur++;
}
}
};