75. 颜色分类
暴力解法
直接遍历记录三种数字的个数
优化1——双指针法(三路快速排序法)
class Solution {
public void sortColors(int[] nums) {
/**
* 双指针遍历,i为当前遍历元素,如果为0就放在左边,为2放在右边,为1就继续遍历
*/
int left = 0;
int right = nums.length - 1;
int i = 0;
int temp = 0;
while (i <= right) {
if (nums[i] == 0){
temp = nums[left];
nums[left] = nums[i];
nums[i] = temp;
left++;
i++;
}
else if (nums[i] == 2){
temp = nums[right];
nums[right] = nums[i];
nums[i] = temp;
right--;
}
else {
i++;
}
}
}
}
/**
* 时间复杂度 O(n)
* 空间复杂度 O(1)
*/