颜色分类问题
这题跟白银挑战的奇偶分类的有点像,只不过这个是分三类,那就一类一类来,左右指针,先将右边的0换到左边,记录下最后一个0的位置,再从此位置开始 将右边所有的1换到左边。
public int sortnum(int[] nums,int start,int val){
int fast=nums.length-1;
int slow=start;
while(fast>slow){
if(nums[fast]==val&&nums[slow]!=val){
int temp=nums[slow];
nums[slow]=nums[fast];
nums[fast]=temp;
}
if(nums[fast]!=val)
fast--;
if(nums[slow]==val)
slow++;
}
if(nums[slow]!=val)
return slow;
else
return slow+1;
}
public void sortColors(int[] nums) {
int start=0;
if(start<nums.length)
start=sortnum(nums,start,0);
if(start<nums.length)
start=sortnum(nums,start,1);
}