https://leetcode.com/problems/sort-colors/description/
有个有意思的点,就是:
如果当前指向的是2,那么换了之后需要重新判断被交换的数字,
但是如果当前指向是0,换了之后不需要判断被交换的数字。
class Solution {
public:
void sortColors(vector<int>& nums) {
int zero_ptr = 0, two_ptr = nums.size()-1;
for (int i = 0; i <= two_ptr; i++) {
if (nums[i] == 0) {
if (nums[i] != nums[zero_ptr]) {
swap(nums[i], nums[zero_ptr]);
}
// i--;
zero_ptr++;
} else {
if (nums[i] == 2) {
cout << "i:" << i << " two_ptr:" << two_ptr << endl;
if (nums[i] != nums[two_ptr]) {
swap(nums[i], nums[two_ptr]);
}
i--;
two_ptr--;
}
}
}
}
};