Leetcode 75. 分类颜色

把0和2往两端换。l保存下一个0的位置【可能正好和搜索位置相同,也可能是1】,r保存下一个2的位置

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

你可能感兴趣的:(Leetcode 75. 分类颜色)