[Leetcode]Sort Colors
来源:互联网 发布:地下城堡2知乎 编辑:程序博客网 时间:2024/06/05 07:06
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?
class Solution {public: /*algorithm count sort,two pass solution time O(n) space O(1) */ void sortColors(vector<int>& nums) { int colors[3]={0}; for(int i = 0;i < nums.size();i++){ colors[nums[i]]++; } for(int c = 0,i = 0;c < 3;c++){ int color = colors[c]; while(color-- > 0)nums[i++]=c; } }};
class Solution {public: /*algorithm two pointers : one pass solution two pointer : one point to 0 array, one pointe to 2 array, when they meet, sort finish time O(n) space O(1) */ void sortColors(vector<int>& nums) { int red = 0; // tail(0's) + 1 int blue = (int)nums.size() - 1; //head(2's) - 1 int i = 0; while(i <= blue){ if(nums[i] == 0){ //red swap(nums[i],nums[red]); red++; i++; }else if(nums[i] == 2){//blue swap(nums[i],nums[blue]); blue--; }else{ //white ++i; } } }};
0 0
- LeetCode: Sort Colors
- LeetCode Sort Colors
- LeetCode : Sort Colors
- leetcode 77: Sort Colors
- Leetcode 75 Sort Colors
- leetcode 101: Sort Colors
- [LeetCode]Sort Colors
- [leetcode]Sort Colors
- LeetCode-Sort Colors
- [leetcode] Sort Colors
- [LeetCode] Sort Colors
- [leetCode] Sort Colors
- LeetCode - Sort Colors
- leetcode:Sort Colors
- LeetCode | Sort Colors
- 【LeetCode】Sort Colors
- Leetcode: Sort Colors
- [LeetCode] Sort Colors
- test7.8
- javascript函数的throttle和debounce
- 快速高斯滤波
- hdp-2.3.0 for windows 安装 hortonwork
- 求数组中和为给定数的所有组合的个数
- [Leetcode]Sort Colors
- HDU 4253 Two Famous Companies(最小生成树+二分)
- 最大流问题 (使用遗传算法解决 --Python 实现)
- C# 实现发送电子邮件以及上传附件
- 精 挑 细 选 263
- 反射运用
- 使用游戏引擎集成时引用爱贝SDK工程之后调用接口抛异常?
- notepad++ 正则替换的占位符超过9的处理方法
- Python使用QRCode模块生成二维码