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

猜你喜欢

转载自blog.csdn.net/bendaai/article/details/80325435