class Solution { public: void sortColors(vector<int>& nums) { int len=nums.size(); int zero=0;//维护两个指针 int two=len-1; for(int i=0;i<=two;) { if(nums[i]==0&&i>zero)//如果当前指针指向一个0,且不是zero指针的0,就交换 { nums[i]=nums[zero]; nums[zero]=0; zero++; } else if(nums[i]==2&&i<two)//如果当前指针指向一个2,且不是two指针的2,就交换 { nums[i]=nums[two]; nums[two]=2; two--; } else i++; } } };
分析:
边界还是没做好,另外总不能一次成功,还是思路不清晰。