题目:75. 颜色分类
思路:双指针。
一个指针指向0应该在的位置,一个指针指向2应该在的位置。遍历数组,把0交换到前面,把2交换到后面。
代码:
class Solution {
public void sortColors(int[] nums) {
int n = nums.length;
int cur = 0, left = 0, right = n - 1;
while (cur <= right) {
if (nums[cur] == 0) {
int temp = nums[cur];
nums[cur] = nums[left];
nums[left] = temp;
cur ++;
left ++;
}
else if (nums[cur] == 2) {
int temp = nums[cur];
nums[cur] = nums[right];
nums[right] = temp;
right --;
}
else {
cur ++;
}
}
}
}