75. 颜色分类
// 左指针指向最左,右指针指向最右
// 遍历数组,如果是0则和左指针交换,左指针右移
// 如果是2则和右指针交换,右指针左移
// 因为数组是从左往右遍历,因此可保证左指针以左都是0
// 但是右指针却有可能将别的数换到i的位置,因此要i--,重新判断一下换来的数
class Solution {
public void sortColors(int[] nums) {
int n = nums.length;
int l = 0, r = n - 1;
for (int i = l; i <= r; i++) {
if (nums[i] == 0) {
int t = nums[i];
nums[i] = nums[l];
nums[l] = t;
l++;
} else if (nums[i] == 2) {
int t = nums[i];
nums[i] = nums[r];
nums[r] = t;
r--;
i--;
}
}
}
}