Leetcode--SortColors

来源:互联网 发布:数据机房消防规范 编辑:程序博客网 时间:2024/05/16 19:12

为了达到n的空间复杂度,可以使用快排中的partition方法。利用三个指针:start, iterator, last以及一个区分值p这里为1。iterator遍历整个数组,如果遇到<=1的数则和start交换,遇到>1的数则和last交换这样可以将数字分成<p,=p,>p三部分。

/** * Created by marsares on 15/6/11. */public class SortColors {    public void sortColors(int[] nums) {        int start=0;        int iterator=0;        int last=nums.length-1;        while(iterator<=last){            if(nums[iterator]<1){                swap(nums,start,iterator);                start++;                iterator++;            }            else if(nums[iterator]==1)iterator++;            else{                swap(nums,iterator,last);                last--;            }        }    }    private void swap(int[]nums,int index1,int index2){        int tmp=nums[index1];        nums[index1]=nums[index2];        nums[index2]=tmp;    }    public void printColors(int[]nums){        for(int i:nums){            System.out.print(i+" ");        }        System.out.println();    }    public static void main(String[]args){        SortColors sc=new SortColors();        int[]array={};        sc.sortColors(array);        sc.printColors(array);    }}


0 0