(三个指针) lleetcode 75. Sort Colors

 

 

思路:三个指针。

i = 0, j = 0, k = n-1;

eg. 0 1 2 2 2 0 0 1

0 | 1 1| xxxxx| 2 2 2

需保证:

[0, i) : 0

[i, j) : 1

[j, k] : unchecked elements

(k, len-1] : 2

 

class Solution {
public:
    void sortColors(vector<int>& nums) {
        if(nums.size()<=1)
            return;
        int i=0, j=0, k = nums.size()-1;
        while(j<=k){
            if(nums[j] == 0){
                swap(nums[i], nums[j]);
                i++;
                j++;
            }
            else if(nums[j] == 1)
                j++;
            else if(nums[j]==2){
                swap(nums[j], nums[k]);
                k--;
            }
        }
    }
};

 

posted @ 2019-07-29 17:07  爱学英语的程序媛  阅读(230)  评论(0编辑  收藏  举报