// 双下标,begin和end表示中间白色的开始和末尾.再对每个元素进行遍历,
// 设为current.分情况讨论:
// 当前是红色: 需要跟begin位置进行交换,begin++, current++;
// 当前是白色: 保持不变,current++;
// 当前是蓝色: 与end位置进行交换,end--,但此时current可能是0, 1, 2,所以保持不变
// 开始想错了,三个下标瞎捣鼓,各种乱七八糟,太菜了
class Solution {
public void sortColors(int[] nums) {
int n = nums.length;
int begin = 0;
int end = n - 1;
int current = 0;
while (current <= end){
if (nums[current] == 0) {
int tmp = nums[current];
nums[current] = nums[begin];
nums[begin] = tmp;
begin ++;
current ++;
}else if (nums[current] == 1) {
current++;
}else {
int tmp = nums[current];
nums[current] = nums[end];
nums[end] = tmp;
end --;
}
}
// System.out.println(Arrays.toString(nums));
}
}