给定一个包含红色、白色和蓝色,一共 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/

一首歌的时间看懂荷兰三色旗问题相关推荐

  1. java如何将两首歌按时间合成,用goldwave怎样把两首歌合并在一起

    类型:音频处理大小:11.3M语言:中文 评分:4.6 标签: 立即下载 goldwave是一款非常好用功能强大的音频编辑软件,用户可以使用goldwave录制.编辑.转换音频,可以进行相应的音频处理 ...

  2. 一首歌带你搞懂Promise

    Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.(摘自<ECMAScript 6 入门>),但是对于Promise的创建和执行流程,其实有很 ...

  3. java如何将两首歌按时间合成_怎么制作串烧歌曲?将多首音乐合并成一首音乐的操作方法...

    我怕是过了个假的春天吧,这天气咋就热成这个样子了呢,现在才三月份啊,气温最高就已经达到了20℃~到时候真正的夏天到了又该咋办呢?果然空调是夏天的续命宝物啊哈哈哈.热热的夏天还是要来听自己喜欢的音乐吖, ...

  4. 给我半首歌的时间,给你说明白Immutable List

    Immutable List,顾名思义,就是,啥,不明白 Immutable 是什么意思?一成不变的意思,所以 Immutable List 就是一个不可变的 List 类,这意味着该 List 声明 ...

  5. 如何引入阿里矢量图的具体方法(一首歌的时间即可学会)

    关于阿里矢量图引入的具体方法 第一步:去官网阿里巴巴矢量图标库 拿头像来举例,如下图所示,将鼠标放在图标上面会有三个选项 点击加入购物车,点击(下载代码). 保存到你已经新建好的文件夹.然后解压文件. ...

  6. 如何命令行结束react程序_想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化...

    前言 以前一直有疑问困扰着我:人人都在吹的Docker容器化,与前端有何关系? 然而在近两年的编程生涯,在每一次产品迭代中,渐渐体会到了容器化其魅力所在. 应用部署从刀耕火种,到DevOps崛起,原来 ...

  7. docker web程序本地化_想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化...

    前言 以前一直有疑问困扰着我:人人都在吹的Docker容器化,与前端有何关系? 然而在近两年的编程生涯,在每一次产品迭代中,渐渐体会到了容器化其魅力所在. 应用部署从刀耕火种,到DevOps崛起,原来 ...

  8. 用一首歌时间将 React 应用 Docker 化,成为前端 Star!

    作者 | 前端劝退师 责编 | 郑丽媛 来源 | 前端劝退师(ID:quantuishi) 以前一直有疑问困扰着我:人人都在吹的Docker容器化,与前端有何关系? 然而在近两年的编程生涯,在每一次产 ...

  9. 我喜欢的一首歌--《幸福的瞬间》

    看了<薰衣草>就开始喜欢这首歌了,看的时候还会为了电视里男女主角痴情的爱情故事落泪,可见我还不成熟. 今天正当我和下班人群一起在572上被挤得快变形的时候,车厢里放起了这首歌,我差点以为是 ...

最新文章

  1. Java练习 SDUT-2737_小鑫の日常系列故事(六)——奇遇记
  2. 文件标识符必须为双精度类型的整数值标量_【翻译】VTK官方文档 - vtk文件格式
  3. 贷还是不贷:如何用Python和机器学习帮你决策?
  4. 一家两位Fellow大满贯!北大谢涛当选ACM Fellow,与胞兄谢源完成会师
  5. 分布式的信息处理需要利用计算机的,计算机应用基础(离线作业1)
  6. 一个具有20位地址和32位字长的存储器_step7编程之地址概念详解
  7. SAP Spartacus ConfigModule.withConfig的处理逻辑
  8. Spring中@Autowired和@Resource的区别
  9. jQuery教程04-jQuery_this选择器
  10. java中equals和 == 的区别
  11. 二分查找算法(C#实现)
  12. mongo go 查询指定字段_使用PyMongo查询MongoDB数据库!
  13. editor修改样式 vue_vue修改富文本中的元素样式
  14. IOI2019团体总分前十排名:美国队夺魁,中国队第三,亚洲占六席
  15. 怎样拨打韩国国际长途电话
  16. DSPE-PEG6-Mal,C60H111N2O17P小分子PEG试剂化学性质
  17. 【大学物理·恒定电流的磁场】恒定电流
  18. Sigar获取系统信息
  19. python秒换算成时分秒_Python以分钟和秒为单位读取excel日期,时分秒
  20. 微信二维码的生成(java后端)--邀请新人

热门文章

  1. C++ Primer 第9章 顺序容器 第一次学习笔记
  2. DataBase project physical design
  3. 淘宝旺铺基础版装修出专业版效果(不花钱也一样做到)
  4. Unity-3d Day03
  5. C#中对于float,double,decimal的误解
  6. 如何在aspx.cs 里面获取html 控件值
  7. adb shell root
  8. oracle 回闪技术恢复误删数据
  9. poj 1523 SPF (无向图 的 割点)
  10. foreach 语句