一首歌的时间看懂荷兰三色旗问题
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
注意:
不能使用代码库中的排序函数来解决这道题。
示例:
输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]
下面看下代码:
/*
荷兰三色旗问题解
*/class Solution {public://p0追踪0的最右边界,p2追踪2的最左边界 void sortColors(vector<int>& nums) {// 对于所有 idx < p0 : nums[idx < p0] = 0// curr 是当前考虑元素的下标int p0 = 0, curr = 0;// 对于所有 idx > p2 : nums[idx > p2] = 2//p2首先指向数组最后一个下标int p2 = nums.size() - 1;while (curr <= p2) {if (nums[curr] == 0) {swap(nums[curr++], nums[p0++]);} else if (nums[curr] == 2) {swap(nums[curr], nums[p2--]);}else curr++;}}
};
该算法用了用3个指针,p0追踪0的最右边界,p2追踪2的最左边界 ,curr表示当前下标。遇到等于0或2的时候就进行交换,并且对p0或p2进行操作,思路很巧妙。
时间复杂度:O(N)
空间复杂度:O(1)
参考地址:https://leetcode-cn.com/problems/sort-colors/solution/yan-se-fen-lei-by-leetcode/
一首歌的时间看懂荷兰三色旗问题相关推荐
- java如何将两首歌按时间合成,用goldwave怎样把两首歌合并在一起
类型:音频处理大小:11.3M语言:中文 评分:4.6 标签: 立即下载 goldwave是一款非常好用功能强大的音频编辑软件,用户可以使用goldwave录制.编辑.转换音频,可以进行相应的音频处理 ...
- 一首歌带你搞懂Promise
Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.(摘自<ECMAScript 6 入门>),但是对于Promise的创建和执行流程,其实有很 ...
- java如何将两首歌按时间合成_怎么制作串烧歌曲?将多首音乐合并成一首音乐的操作方法...
我怕是过了个假的春天吧,这天气咋就热成这个样子了呢,现在才三月份啊,气温最高就已经达到了20℃~到时候真正的夏天到了又该咋办呢?果然空调是夏天的续命宝物啊哈哈哈.热热的夏天还是要来听自己喜欢的音乐吖, ...
- 给我半首歌的时间,给你说明白Immutable List
Immutable List,顾名思义,就是,啥,不明白 Immutable 是什么意思?一成不变的意思,所以 Immutable List 就是一个不可变的 List 类,这意味着该 List 声明 ...
- 如何引入阿里矢量图的具体方法(一首歌的时间即可学会)
关于阿里矢量图引入的具体方法 第一步:去官网阿里巴巴矢量图标库 拿头像来举例,如下图所示,将鼠标放在图标上面会有三个选项 点击加入购物车,点击(下载代码). 保存到你已经新建好的文件夹.然后解压文件. ...
- 如何命令行结束react程序_想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化...
前言 以前一直有疑问困扰着我:人人都在吹的Docker容器化,与前端有何关系? 然而在近两年的编程生涯,在每一次产品迭代中,渐渐体会到了容器化其魅力所在. 应用部署从刀耕火种,到DevOps崛起,原来 ...
- docker web程序本地化_想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化...
前言 以前一直有疑问困扰着我:人人都在吹的Docker容器化,与前端有何关系? 然而在近两年的编程生涯,在每一次产品迭代中,渐渐体会到了容器化其魅力所在. 应用部署从刀耕火种,到DevOps崛起,原来 ...
- 用一首歌时间将 React 应用 Docker 化,成为前端 Star!
作者 | 前端劝退师 责编 | 郑丽媛 来源 | 前端劝退师(ID:quantuishi) 以前一直有疑问困扰着我:人人都在吹的Docker容器化,与前端有何关系? 然而在近两年的编程生涯,在每一次产 ...
- 我喜欢的一首歌--《幸福的瞬间》
看了<薰衣草>就开始喜欢这首歌了,看的时候还会为了电视里男女主角痴情的爱情故事落泪,可见我还不成熟. 今天正当我和下班人群一起在572上被挤得快变形的时候,车厢里放起了这首歌,我差点以为是 ...
最新文章
- Java练习 SDUT-2737_小鑫の日常系列故事(六)——奇遇记
- 文件标识符必须为双精度类型的整数值标量_【翻译】VTK官方文档 - vtk文件格式
- 贷还是不贷:如何用Python和机器学习帮你决策?
- 一家两位Fellow大满贯!北大谢涛当选ACM Fellow,与胞兄谢源完成会师
- 分布式的信息处理需要利用计算机的,计算机应用基础(离线作业1)
- 一个具有20位地址和32位字长的存储器_step7编程之地址概念详解
- SAP Spartacus ConfigModule.withConfig的处理逻辑
- Spring中@Autowired和@Resource的区别
- jQuery教程04-jQuery_this选择器
- java中equals和 == 的区别
- 二分查找算法(C#实现)
- mongo go 查询指定字段_使用PyMongo查询MongoDB数据库!
- editor修改样式 vue_vue修改富文本中的元素样式
- IOI2019团体总分前十排名:美国队夺魁,中国队第三,亚洲占六席
- 怎样拨打韩国国际长途电话
- DSPE-PEG6-Mal,C60H111N2O17P小分子PEG试剂化学性质
- 【大学物理·恒定电流的磁场】恒定电流
- Sigar获取系统信息
- python秒换算成时分秒_Python以分钟和秒为单位读取excel日期,时分秒
- 微信二维码的生成(java后端)--邀请新人