一、笔记部分

思路:

1.一看到按照顺序排序,还有用数字表示每种颜色的代号,这样更利于排序。

2.先搞一个快排热热手。

直接强力排序死的太惨了,真实吊车尾。

方法二:单指针

因为里面说了颜色的代号,所以我们是很明确数组里面有哪些元素,可以根据元素的性质进行排序,从头遍历数组,遇到0就交换到前面,index记下,然后再开始找1,遇到从index+1开始交换,最后只剩下2。然后就成了

方法三:双指针(双指针移动必有结束条件,一定要注意,一不注意就会错)

①可以不用一遍一遍的检索,多安排几个指针一起走。p0,p1分别取指向是0和1的数。开始一起走,用i遍历数组,当i遇到0, 交换p0与i指向的元素,同时p0,p1向后移动;当i遇到1的时候,交换p1与i指向的元素,只是p1往后移动,因为如果一起移动的话,p0就漏掉了1,只能让与0交换才行。

②用p0和p2,p2指向末尾,p0指向头,这样就不会设计到两个指针耦合,这两个就是相互不涉及的,但是两头走的问题会出现p2原来指的就是0所以直到nums[i]不等于0且不等于2,i才能走(只有交换p2的时候才会再一次检索,因为i是从p0开始索引,如果p0一开始指向2,一下子就换了,然后p2指向的内容如果是0,那么i还要判定,否则下次p0指向的0会被交换出去。),只也只能用于2-3个元素组成的排序。

双指针交换元素的时候,一定要想一想目前被指的这个数交换出去有没有问题。可以肯定的是,被指的那个数不可能是自己要求的数。比如p0不指向0,p2不指向2(交换后的情况).

再次解释一下,为什么p2交换完了还要继续看num2[i]是否为2:因为如果不判定的话,i就会将继续往前,只有当p2向前移动到非2的元素后,交换后,这才是一次成功的交换p2;p0因为是一直跟着i走的,不会存在010这种情况,因为此时p0已经指向1了,如果一开始是000的话,i和p0是一起走的

一般关系到交换移动,每个括号都要考虑边界。

排序和双指针的应用场景:

双指针的应用场景一般对于题目的约束比较大(只用关心较少的关键词):比如两个数、三个数之和、平方之类,交换,环形,最长的之类的。

排序的应用场景一般都比较简短,表达很简陋之类(考虑到所有数情况):出现频率,第K大的数组。

二、排序类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112643107

三、各种类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112556249

四、如有疑问可加QQ群讨论:725936761 博主免费答疑

75.国旗问题:颜色分类(力扣leetcode) 博主可答疑该问题相关推荐

  1. Leetcode-How-What 力扣Leetcode刷题指南

    Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...

  2. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  3. 在 vscode 上刷力扣 Leetcode 可以这样来

    背景 神奇的算法网站 LeetCode 值得驻留,网页版似乎不太方便,作为习惯于在编译器上敲代码的你,如何 vscode 上优雅的刷力扣 Leetcode,在本地配置,记录下来方便备查. 环境前置:电 ...

  4. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  5. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  6. 力扣(LeetCode)刷题,简单+中等题(第32期)

    目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...

  7. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

  8. 力扣(LeetCode)刷题,简单+中等题(第30期)

    目录 第1题:单词规律 第2题:找不同 第3题:在排序数组中查找元素的第一个和最后一个位置 第4题:使用最小花费爬楼梯 第5题:寻找峰值 第6题:字符串中的第一个唯一字符 第7题:两个数组的交集 II ...

  9. 力扣(LeetCode)刷题,简单+中等题(第29期)

    目录 第1题:分割数组为连续子序列 第2题:翻转矩阵后的得分 第3题:寻找旋转排序数组中的最小值 第4题:乘积最大子数组 第5题:不同路径 第6题:判断路径是否相交 第7题:摆动序列 第8题:单调递增 ...

  10. 力扣(LeetCode)刷题,简单+中等题(第28期)

    目录 第1题:翻转单词顺序 第2题:顺时针打印矩阵 第3题:总持续时间可被 60 整除的歌曲 第4题:字符串的最大公因子 第5题:上升下降字符串 第6题:将数组分成和相等的三个部分 第7题:可被 5 ...

最新文章

  1. 昨天又帮爸DIY了一台工作电脑
  2. ios: coreData的NSManagedObject setvalue为null
  3. ICML 2021 | AlphaNet:基于α-散度的超网络训练方法
  4. 受限玻尔兹曼机RBM实现及能量值思考——matlab实现
  5. 【POJ - 1511】 Invitation Cards(Dijkstra + 反向建图 多源到单源最短路的处理)
  6. Go语言入门——Go语言环境搭建
  7. 【面试收藏】Redis最全面试题
  8. 记一次FFMPEG转avi视频保存到ftp服务器的失败尝试
  9. 阿里云云盾 · 云防火墙技术解读:零配置业务自动分组,安全管理有序、可见...
  10. PAT (Basic Level) Practise (中文)- 1006. 换个格式输出整数 (15)
  11. windows下文件路径太深,删除解决方案
  12. 解决谷歌浏览器书签同步问题
  13. android自定义view设置背景颜色,Android View的几种背景颜色设置
  14. 下载安装eiigui工具
  15. 【HTML 教程系列第 14 篇】什么是 HTML 中的有序列表 ol
  16. ASP.NET 文件下载
  17. 浅谈IM系统之消息必达
  18. 获取root权限及破解原理分析
  19. 爬虫百战(四)——爬取yy短视频
  20. Unity游戏开发——unity接入多渠道sdk

热门文章

  1. 兼容IE和FF的js脚本做法
  2. classpath路径浅谈
  3. Eclipse 无法打开Console,show view无效
  4. 天梯赛L2-6 树的遍历
  5. 2022年寒假ACM练习2(待补题)
  6. 小知识--DOS命令2
  7. 指纹识别 python实现_Python还真当是无所不能!利用Python做指纹识别播报!闻所未闻!-站长资讯中心...
  8. 江苏计算机类事业编总分多少,必看!江苏事业单位统考三类岗位分值分布
  9. STL map 的基本成员函数
  10. NYOJ31 5个数求最值