leetcode-75. 颜色分类]
-
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交换,
-
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;
}