单指针交换遍历(数组的前插法)
class Solution {
public void sortColors(int[] nums) {
int len=nums.length;
int newstart=0;
for(int i=0;i<len;i++){
if(nums[i]==0){
int temp=nums[i];
nums[i]=nums[newstart];
nums[newstart]=temp;
newstart++;
}
}
for(int i=0;i<len;i++){
if(nums[i]==1){
int temp=nums[i];
nums[i]=nums[newstart];
nums[newstart]=temp;
newstart++;
}
}
return;
}
}
重写数组简单做法
class Solution {
public void sortColors(int[] nums) {
int zeros=0;
int one=0;
int two=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==0){
zeros++;
}
if(nums[i]==1){
one++;
}
if(nums[i]==2){
two++;
}
}
int index=0;
for(int i=0;i<zeros;i++){
nums[index]=0;
index++;
}
for(int i=0;i<one;i++){
nums[index]=1;
index++;
}
for(int i=0;i<two;i++){
nums[index]=2;
index++;
}
return;
}
}