75. Sort Colors

你快乐吗?

Posted by bbkgl on September 26, 2019

# 75. Sort Colors


84%,注意题目要求,不让用库函数,只能扫一路。其实就是扫一路,碰到0,与left所在位置的数交换,碰到2,与right所在位置的数交换,注意以下特殊情况

  • 交换后当前位数字不是1
  • left不能超过当前位
class Solution {
public:
    void sortColors(vector<int> &nums) {
        int left = 0, right = nums.size() - 1;
        int i = 0;
        while (i <= right) {
            if (nums[i] == 0) {
                swap(nums[i], nums[left++]);
                if (nums[i] == 1 || left > i) i++;
            }
            else if (nums[i] == 2) {
                swap(nums[i], nums[right--]);
                if (nums[i] == 1) i++;
            }
            else
                i++;
        }
    }
};`