Leetcode 75. Sort Colors

Intuition

The basic intuition comes from sorting.

Approach

In the naive approach, we can sort the array using inbuilt sorting function. The time complexity will be O(N*log(N)).

  • Optimize: Since we are sorting only three numbers, we can use the concept of counting sort. Keep track of number of zeros and number of ones in the array.

Complexity

  • Time complexity: O(N)

  • Space complexity: O(1)

Code

class Solution {
public void sortColors(int[] nums) {
int countZero = 0;
int countOne = 0;
for(int num: nums){
switch(num){
case 0:
countZero++;
break;
case 1:
countOne++;
}
}
int currentIndex = -1;
while(0<countZero--){
nums[++currentIndex] = 0;
// countZero--;
}
while(0<countOne--){
nums[++currentIndex] = 1;
// countOne--;
}
while(currentIndex<nums.length-1){
nums[++currentIndex] = 2;
}
}
}
class Solution {
    public void sortColors(int[] nums) {
        int countZero = 0;
        int countOne  =  0;
        for(int num: nums){
            switch(num){
                case 0:
                    countZero++;
                    break;
                case 1:
                    countOne++;
            }
        }
        int currentIndex = -1;
        while(0<countZero--){
            nums[++currentIndex] = 0;
            // countZero--;
        }
        while(0<countOne--){
            nums[++currentIndex] = 1;
            // countOne--;
        }
        while(currentIndex<nums.length-1){
            nums[++currentIndex] = 2;
        }
    }
}
class Solution { public void sortColors(int[] nums) { int countZero = 0; int countOne = 0; for(int num: nums){ switch(num){ case 0: countZero++; break; case 1: countOne++; } } int currentIndex = -1; while(0<countZero--){ nums[++currentIndex] = 0; // countZero--; } while(0<countOne--){ nums[++currentIndex] = 1; // countOne--; } while(currentIndex<nums.length-1){ nums[++currentIndex] = 2; } } }

Enter fullscreen mode Exit fullscreen mode

GitHub repo for more solutions: Git
Leetcode profile: Leetcode: devn007

原文链接:Leetcode 75. Sort Colors

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
Your dream is like a flower. if you water it patiently, the flower will come out beautifully.
即使是最简单的梦想,用心浇灌,也能开出绚烂的花
评论 抢沙发

请登录后发表评论

    暂无评论内容