1、问题
2、算法标签
- 双指针算法
3、通过代码
双指针算法实现代码
class Solution {
public:
void sortColors(vector<int>& nums) {
int l=0,r=nums.size()-1;
for(int i=l;i<=r;){
if(nums[i]<nums[l]){
swap(nums[i],nums[l]);
}
else if(nums[i]>nums[r]){
swap(nums[i],nums[r]);
}
for(;l<=r&&nums[l]==0;l++){}
for(;l<=r&&nums[r]==2;r--){}
if(l<=r&&nums[i]>=nums[l]&&nums[i]<=nums[r]){
i++;
}
i=max(i,l);
}
}
};