leecode第七十五题(颜色分类)

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++;
        }
        
    }
};

分析:

边界还是没做好,另外总不能一次成功,还是思路不清晰。

posted @ 2019-07-19 15:26  深夜十二点三十三  阅读(89)  评论(0编辑  收藏  举报