75. Sort Colors
来源:互联网 发布:网络拓扑描述 编辑:程序博客网 时间:2024/06/06 15:00
Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.
Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
Note:
You are not suppose to use the library's sort function for this problem.
click to show follow up.
Follow up:
A rather straight forward solution is a two-pass algorithm using counting sort.
First, iterate the array counting number of 0's, 1's, and 2's, then overwrite array with total number of 0's, then 1's and followed by 2's.
Could you come up with an one-pass algorithm using only constant space?
Subscribe to see which companies asked this question.
Solution:
Tips:
Solution 1. give 3 counter to record red, white and blue, then update the array based on the three numbers.
2-pass
Solution 2. give 2 pointer one to record the left edge, and the other to record the right edge, if meet 0 exchange with the left, if meet 2, exchange with the right.
1-pass
Solution 1 Java Code:
public class Solution { public void sortColors(int[] nums) { int redCount = 0; int whiteCount = 0; int blueCount = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] == 0) { redCount++; } else if (nums[i] == 1) { whiteCount++; } else { blueCount++; } } int j = 0; while (redCount-- > 0) { nums[j++] = 0; } while (whiteCount-- > 0) { nums[j++] = 1; } while (blueCount-- > 0) { nums[j++] = 2; } }}
Solution 2 Java Code:
public class Solution { public void sortColors(int[] nums) { int redIdx = 0; int blueIdx = nums.length - 1; int i = 0; while (i <= blueIdx) { if (0 == nums[i]) { nums[i] = nums[redIdx]; nums[redIdx] = 0; redIdx++; i = i < redIdx ? redIdx : i + 1; } else if (2 == nums[i]) { nums[i] = nums[blueIdx]; nums[blueIdx] = 2; blueIdx--; } else { i++; } } }}
- 【sort专题】75. Sort Colors
- 75. Sort Colors
- [LeetCode]75.Sort Colors
- LeetCode --- 75. Sort Colors
- [Leetcode] 75. Sort Colors
- [leetcode] 75.Sort Colors
- 75. Sort Colors
- 【leetcode】75. Sort Colors
- 75. Sort Colors
- [leetcode] 75. Sort Colors
- Leetcode 75. Sort Colors
- *LeetCode 75. Sort Colors
- 75. Sort Colors LeetCode
- 75. Sort Colors
- Leetcode 75. Sort Colors
- 75. Sort Colors
- [LeetCode]75. Sort Colors
- 75. Sort Colors
- HDU1325Is It A Tree?
- 信号槽机制浅析
- 动态规划-矩阵链乘法
- 代码实现 按钮点击出现不同的图片或者颜色
- Java 多线程安全机制
- 75. Sort Colors
- Linux初级学习第九单元
- 【CF446D】DZY Loves Games(games)
- 问题解决:Ubuntu和Windows系统的时间不同步
- 代码整洁之道精华——第十四章 逐步改进
- 系统集成项目管理工程师教程看书笔记16
- pat甲级1007. Maximum Subsequence Sum (25)
- (转)Android 自己实现 NavigationView [Design Support Library(1)]
- VTK基本概念之坐标系统