Leetcode——75. Sort Colors
来源:互联网 发布:淘宝如何买东西 编辑:程序博客网 时间:2024/06/06 09:40
题目:
https://leetcode.com/problems/sort-colors/
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 Solution1 {public: void sortColors(vector<int>& nums) { int red=0,white=0,blue=0; for(int i=0;i<nums.size();i++) { if(nums[i]==0) red++; else if(nums[i]==1) white++; else blue++; } for(int index=0;index<nums.size();index++) { if(red>0) { red--; nums[index]=0; } else if(white>0) { white--; nums[index]=1; } else if(blue>0) { blue--; nums[index]=2; } } }};class Solution {public: void sortColors(vector<int>& nums) { int low=0,high=nums.size()-1; for(int i=0;i<=high;) { if(nums[i]==0) { swap(nums[i],nums[low]); low++; i++; } else if(nums[i]==2) { swap(nums[i],nums[high]); high--; } else i++; } }};
第一个是两趟:计数排序
第二个是一趟:把是2的都挪到右边,是0的都挪到左边。在挪的过程中,需要注意边界条件的增减!
https://discuss.leetcode.com/topic/5422/share-my-one-pass-constant-space-10-line-solution/54
- Sort Colors —LeetCode
- Leetcode——75. Sort Colors
- LeetCode —— Sort Colors
- LeetCode——Sort Colors
- LeetCode——Sort Colors
- [LeetCode]75.Sort Colors
- LeetCode --- 75. Sort Colors
- [Leetcode] 75. Sort Colors
- [leetcode] 75.Sort Colors
- 【leetcode】75. Sort Colors
- [leetcode] 75. Sort Colors
- Leetcode 75. Sort Colors
- *LeetCode 75. Sort Colors
- 75. Sort Colors LeetCode
- Leetcode 75. Sort Colors
- [LeetCode]75. Sort Colors
- LeetCode 75. Sort Colors
- LeetCode *** 75. Sort Colors
- 一个贴吧小问题引发的思量
- 把字符串转换成整数(try-except)
- NYOJ463 - 九九乘法表
- 335. Self Crossing
- POJ 2251 Dungeon Master (BFS)
- Leetcode——75. Sort Colors
- NYOJ1071 - 不可以!
- Merge sort
- 2016年年终终结
- Java 中,为什么在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?
- NYOJ105 - 九的余数
- C++多重继承下的函数动态绑定问题分析
- 语录
- 2.2线性表的顺序表示和实现