75. Sort Colors

One pass: quick sort!

class Solution {
    public void sortColors(int[] nums) {
        int pivot1 =0;
        int pointer =0;
        int pivot2 = nums.length-1;
        
        while(pointer<=pivit2){
            if(nums[pointer]==0){
                swap(nums, pointer, pivit1);
                pointer++;
                pivit1++;
            }else if(nums[pointer]==2){
                swap(nums, pointer, pivit2);
                pivit2--;
            }else{
                pointer++;
            }
        }
    }
    private void swap(int[] nums, int i, int j){
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }
}

two pass

class Solution {
    public void sortColors(int[] nums) {
        int[] memo= new int[3];
        
        for(int i : nums){
            memo[i]++;
        }
        
        helper(nums, 0, memo[0], 0);
        helper(nums, memo[0], memo[1],1);
        helper(nums, memo[0]+memo[1], memo[2], 2);
    }
    
    private void helper(int[] nums, int start, int count, int target){
        for (int i=start; i<start+count; i++){
            nums[i]=target;
        }
    }
}

Last updated