题意理解:
将021201混杂排序的数组,最终整理为001122类型的数组结果;
题目分析:
1. 避免使用先计算0、1、2的个数,然后,再分别对数组进行重新赋值的方式进行解题;
2. 使用双指针算法;
解题代码:
public class Solution {
private void swap(int[] array, int x, int y){
int t=array[x];
array[x]=array[y];
array[y]=t;
}
public void sortColors(int[] nums) {
int len=nums.length;
if(len==1){
return;
}
int left=-1;
int right=len;
int index=0;
while(index<right){
if(nums[index]==0){
// System.out.println("1: index= "+index+" left= "+left);
if(index>left){
swap(nums, index, ++left);
}else{
index++;
}
}else if(nums[index]==2){
swap(nums, index, --right);
}else{
index++;
}
}
}
}