75. 颜色分类
-
荷兰国旗问题,直接分成三部分[0区,1区,2区]
0区最右边为less指针,开始在0的左边 -1
2区最左边为more指针,开始在数组最后一个数的右边 nums.length
index为指针,当index没有超过more区的时候可以进行循环
-
nums[index] == 1,跳过index++
-
nums[index] == 0,就把0区下一位和当前index的数交换,index++
-
nums[index] ==2,就把2区的前一位和当前的index交换,当前index所在的数是2区前一位的数字,还没有进行比较,所以不用index++
-
public void sortColors(int[] nums) {
int less = -1;
int more = nums.length;
int index = 0;
while(index < more){
if(nums[index] == 1){
index++;
}else if(nums[index] == 0){
swap(nums, index++, ++less);
}else{
swap(nums, index, --more);
}
}
}
public void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
标签:index,nums,int,分类,less,++,75,leetcode,more From: https://www.cnblogs.com/phonk/p/16774218.html