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