75. 颜色分类
思路:双指针,遇到0就替换到左边;遇到2就替换到右边;遇到1不管;具体替换左边右边的那个数由两指针控制。
class Solution {
public void sortColors(int[] nums) {
int l = 0, r = nums.length - 1;
for(int i =0 ; i <= r; i++) {
if(nums[i] == 0) {
if(i > l){ //i==l就没必要交换了
swap(nums,i,l);
l++;
i--; //交换后的节点也需要判断,而不是跳到下一个元素
}
}
if(nums[i] == 2) {
if(i < r) {
swap(nums,i,r);
r--;
i--;
}
}
}
}
//两数交换
public void swap(int[] nums,int i, int j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}