class Solution {
public void sortColors(int[] nums) {
int r=0;
int w=0;
int b=0;
for(int i=0;i<nums.length;++i){
if(nums[i]==0){
++r;
}else if(nums[i]==1){
++w;
}else{
++b;
}
}
for(int i=0;i<nums.length;++i){
if(r!=0){
nums[i]=0;
--r;
}else if(w!=0){
nums[i]=1;
--w;
}else if(b!=0){
nums[i]=2;
}else{
break;
}
}
}
}
时间复杂度击败了100%,但还是扫描了两遍。没想到双指针的思想,首先定义两个指针,一个位于数组头部,一个位于数组尾部,当我们遇到 0 时则给我们头部指针交换,遇到 2 时,则给尾部指针交换