给定一个包含红色、白色和蓝色,一共 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

注意:
不能使用代码库中的排序函数来解决这道题。

示例:

输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]

进阶:

  • 一个直观的解决方案是使用计数排序的两趟扫描算法。
    首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。
  • 你能想出一个仅使用常数空间的一趟扫描算法吗?

思路:这道题可以有很多解法,计数法,还有大不了再开一块空间初始化为全1,再依此放0,2就行了呗,所以题目有了要求,要求一趟扫描,于是双指针扫描便来了,其实也很简单,就是扫描如果当前nums[cur]是0的话就交换掉left位置本该为0的值,left++;2也类似,right--就行 ,但是要注意的是如果nums[cur]==0,而且cur==left就说明left位置已经是0了,这时候不需要交换,cur++,right++,否则会出问题哦~

class Solution {
public:void sortColors(vector<int>& nums) {int n = nums.size();int left = 0;int right = n-1;int cur = 0;while(cur<=right){if(nums[cur]==0 && cur==left){cur++; left++;}else if(nums[cur]==0){swap(nums[cur],nums[left++]);}else if(nums[cur]==2){swap(nums[cur],nums[right--]);}else{cur++;}}return;}
};

颜色分类—leetcode75相关推荐

  1. Leetcode75. 颜色分类

    Leetcode75. 颜色分类 题目: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. ...

  2. LeetCode--75.颜色分类(三路快排,计数排序)

    颜色分类(C) 1. 题目描述 2. 题目解析 3. C语言实现 3.1 三路快排法 3.2 计数排序法 1. 题目描述 难度:中等 2. 题目解析 这道题需要注意一下几点: 原地进行排序,不可以另外 ...

  3. 《LeetCode力扣练习》第75题 颜色分类 Java

    <LeetCode力扣练习>第75题 颜色分类 Java 一.资源 题目: 给定一个包含红色.白色和蓝色.共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按 ...

  4. python 三指针解决颜色分类

    颜色分类 给定一个包含红色.白色和蓝色,一共 n 个元素的数组, 原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列.此题中,我们使用整数 0. 1 和 2 分别表示红色.白色 ...

  5. LeetCode 73矩阵置零74搜素二维矩阵75颜色分类

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  6. 【ArcGIS风暴】ArcGIS矢量数据分层设色后导出或裁剪后颜色分类丢失完美解决办法

    在利用ArcGIS做土地利用现状图或者规划图时,事先费了好大劲把每个地类对应的图斑进行了符号化(用不同的颜色表示),后来把符号化好的数据导出,并进行加载,发现颜色分类完全丢失了,同样,在利用某个重点区 ...

  7. 构建 Darknet 分类器 (Tiny Darknet) 训练数据集 (color recognition 颜色识别/color classification 颜色分类)

    构建 Darknet 分类器 (Tiny Darknet) 训练数据集 (color recognition 颜色识别/color classification 颜色分类) 1. CompCars_C ...

  8. (转!)利用Keras实现图像分类与颜色分类

    2018-07-19 全部谷歌渣翻加略微修改 大家将就的看哈 建议大佬们还是看看原文 点击收获原文 其中用到的示例文件 multi-output-classification 大家可以点击 下载 . ...

  9. leetcode必刷题(四)lee75 颜色分类、lee76 最小覆盖字串、lee78 子集、lee79 单词搜索、lee84 柱状图中最大的矩形、lee85 最大矩形、lee96 不同的二叉搜索树、

    lee75 颜色分类 patition 三个指针 lee76 最小覆盖字串 滑动窗口 lee78 子集 无重复数字 回溯 lee79 单词搜索 回溯 lee84 柱状图中最大的矩形 单调栈 lee85 ...

最新文章

  1. mysql删除数据库恢复_详解MySQL数据库恢复误删除数据
  2. Grove Beginner Kits基础实验 Arduino
  3. windows 7装IIS
  4. 信道仿真java_Matlab 瑞利信道仿真
  5. Linux基础:Shell脚本学习
  6. 【spring boot基础知识】如何使用自定义配置类
  7. 解决li在ie,firefox中行高不一致问题
  8. 初学者易上手的SSH-hibernate01环境搭建
  9. win7下MongoDB集群告别裸奔
  10. 计算机资源管理器课件,资源管理器ppt课件
  11. 古风素材无水印免费下载
  12. Beyond Compare linux
  13. 创建Visual Studio离线升级包
  14. oracle中文转换为unicode,Oracle数据库字符集转换成Unicode产品开发
  15. 读 John Tosh 之《史学导论:现代历史学的目标、方法和新方向》
  16. 深度学习之文本生成图片
  17. 内网穿透工具--lanproxy
  18. python爬取百度地图_python 爬虫百度地图的信息界面的实现方法
  19. mysql 开启 slow log,mysql 5.5 开启慢日志slow log的方法(log_slow_queries)
  20. 最新款打卡抽奖助手小程序源码,带微信通知功能,去授权

热门文章

  1. centos 6.3 mysql python 模块_CentOS安装python2.6以及MySQL-python
  2. OpenGL视点跟踪物体运动
  3. mysql fulltext索引
  4. 九章算法班L3 Dynamic Programming Ⅰ
  5. 【Tool】Augmentor和imgaug——python图像数据增强库
  6. Android攻城狮Gallery和ImageSwitcher制作图片浏览器
  7. Web.xml配置详解之context-param(转)
  8. animateWithDuration
  9. DataGridView的DataGridViewComboBoxColumn列点击一次
  10. 关于“因为数据库正在使用,所以无法获得对数据库的独占访问权”的最终解决方案...