颜色分类-双指针

55 阅读1分钟
// 颜色分类排序-双指针  
// 输入:nums = [2,0,2,1,1,0]  
// 输出:[0,0,1,1,2,2]  
public static void sortColors(int[] nums){  
    int len=nums.length;  
    if(len<2){  
        return;  
    }  
    int zero=-1;  
    int two=len-1;  
    int i=0;  
    while (i<=two){  
        // 0-zero==1  
        if(nums[i]==0){  
            zero++;  
            swap(nums,i,zero);  
            i++;  
        // zero-i==1  
        }else if(nums[i]==1){  
            i++;  
        // two-n ==2  
        }else{  
            swap(nums,i,two);  
            two--;  
        }  
    }  
  
}