思路:
用两个指针,一个标记0的结尾,一个标记2的开头。。用一个指针扫描数组。如果是0,放到0的集合中,如果是2放到2的集合中。如果是1则不处理。。
public class Solution {
public void sortColors(int[] nums) {
int zeroIndex=-1;
int twoIndex=nums.length;
for(int i=0;i<twoIndex;)
{
if(nums[i]==0)
{
if(++zeroIndex<twoIndex)
{
nums[i]=nums[zeroIndex];
nums[zeroIndex]=0;
}
i++;
}
else if(nums[i]==2)
{
if(--twoIndex>zeroIndex)
{
nums[i]=nums[twoIndex];
nums[twoIndex]=2;
}
}
else
{
i++;
}
}
}
}