3 parts partition (sort colors)

the left part of left pointer is less than 1. [.., left)
the right part of right pointer is greater than 1. (right, ...]
the part between left pointer and i is equal to 1. [left, i)

public class sortColors {
    public static void sortColors(int[] nums) {
        if(nums==null||nums.length==0)return;
        int len = nums.length;
        int left = 0, right = len-1, i = 0;
        while (i <= right){
            System.out.println(left+"   "+i+"   "+right);
            System.out.println(Arrays.toString(nums));
            
            if (nums[i] < 1){
                swap(nums, left, i);
                left++;
                i++;
            } else if (nums[i] == 1) {
                i++;
            } else {
                swap(nums, i, right);
                right--;
            }
            System.out.println(left+"   "+i+"   "+right);
        }
        return;
    }
    
    private static void swap(int[] nums,int i,int j){
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }
    public static void main(String[] args) {
        int [] nums = new int[] {2,0,0,1,1,2,2,0};
        sortColors(nums);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 9,980评论 0 23
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,782评论 0 33
  • (所有配图为本人农场考察所拍) 最近看到一个报道:全世界每年大约有70万人死于抗药性感染,用达尔文的进化论来解释,...
    梧桐生生阅读 552评论 0 4
  • 1:早起半小时,又做了一瓶泡菜。 2:做一顿营养丰富的早餐 3:今天体重88.9斤了,有进步。 4:走路13786...
    心境如花阅读 178评论 0 0
  • 借用精神分析学家弗洛伊德之结构理论: “恋”偏向于本我,人类本能的性的内驱力和被压抑的倾向,受“快乐原则”的支配,...
    滄梧阅读 197评论 0 0