lintcode-颜色分类-148
来源:互联网 发布:收费系统源码 编辑:程序博客网 时间:2024/06/05 11:47
给定一个包含红,白,蓝且长度为n的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。
我们可以使用整数0,1和2分别代表红,白,蓝。
样例
注意
说明 不能使用代码库中的排序函数来解决这个问题
一个相当直接的解决方案是使用计数排序扫描2遍的算法。
首先,迭代数组计算0,1,2出现的次数,然后依次用0,1,2出现的次数去覆盖数组。
你否能想出一个仅使用常数级额外空间复杂度且只扫描遍历一遍数组的算法
解题方案:运用快排中划分数组的思想
class Solution{public: int solve(vector<int> &v,int begin,int end,int color){ int slow=begin-1,fast=begin; while(fast<end){ if(v[fast]==color) swap(v[fast],v[++slow]); ++fast; } return slow; } void sortColors(vector<int> &nums) { solve(nums,solve(nums,0,nums.size(),0)+1,nums.size(),1); }};
0 0
- lintcode-颜色分类-148
- LintCode-颜色分类
- Lintcode: 颜色分类
- 【Lintcode】颜色分类
- LintCode:颜色分类
- lintcode--颜色分类
- 颜色分类-LintCode
- [LintCode] 颜色分类 Sort Colors
- [Lintcode]Sort Colors颜色分类
- lintcode刷题——颜色分类
- lintcode(148)颜色分
- 颜色分类
- 颜色分类
- 颜色分类
- 颜色分类
- 颜色分类
- 颜色分类
- LintCode : 排颜色 II
- 原码, 反码, 补码 详解
- Python+OpenCV学习(7)---模板匹配
- FastDFS 使用经验分享
- 高流量大并发Linux TCP性能调优
- 机器学习常用数据库
- lintcode-颜色分类-148
- time, localtime
- 排序算法
- 对有向图的环的判定,并且输出图中所有的路径 C++算法
- Integer比较值大小==,大于等于128的返回false
- 小试uiautomatorviewer
- HDU 1671 Phone List(字典树)
- linux 下vi进行文件编辑的常用命令1
- selenium回放按钮不可用。