把0都放在左边,把2都放在右边。但是需要注意的是,每在右边放一个数,就要把遍历的长度-1,并且还要i–以检查交换过来的数是不是0或者2。而往左边放的时候就不用考虑,因为和左边的交换必然是和1交换。
public void sortColors(int[] nums) {
int lf = 0;
int rt = nums.length - 1;
int n = nums.length;
for(int i = 0;i < n;i++){
if(nums[i] == 0){
swap(nums,lf,i);
lf++;
}else if(nums[i] == 2){
swap(nums,rt,i);
rt--;
n--;
i--;
}
}
}
public void swap(int[] arr,int i,int j){
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}