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
Was this helpful?