75. 颜色分类(图解)

题目

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

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

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

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

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

思路

原地排序、一趟扫描算法: 着空间复杂度为O(1),时间复杂度为O(n)
所以采用三指针解法

下面可以体现为什么要再次判断绿色指针。

public class _75_颜色分类 {public void sortColors(int[] nums) {int i = 0;int l = 0;int r = nums.length - 1;while (i <= r){int v = nums[i];if (v == 0){swap(nums, i++, l++);}else if (v == 1){i ++;}else {swap(nums, i, r--);}}}private void swap(int [] nums, int i, int j){int tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;}
}

75. 颜色分类(图解)相关推荐

  1. 【leetcode】75.颜色分类(多种解法,超详细图文解析)

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

  2. Leetcode算法Java全解答--75. 颜色分类

    Leetcode算法Java全解答–75. 颜色分类 文章目录 Leetcode算法Java全解答--75. 颜色分类 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 给定 ...

  3. 75. 颜色分类(C++实现)

    文章目录 题目 思路--三指针 题目 题目链接:75. 颜色分类) 思路–三指针 其实颜色分类就是对 0 1 2 这三个数字进行排序,但是排序都是有效率之分的,我们希望可以通过一种高效的方法去排序这三 ...

  4. LeetCode - 75 颜色分类

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

  5. 2021.1.9每日复习 75.颜色分类(复习快速排序)+ 77.组合(回溯算法)

    ***75.颜色分类(复习快速排序) class Solution {public void sortColors(int[] nums) {//方法一:冒泡排序// int n = nums.len ...

  6. 75. 颜色分类(荷兰国旗问题)

    75. 颜色分类(荷兰国旗问题) 题目 解题思路 代码 题目 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中 ...

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

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

  8. leetcode菜狗入门 | 75. 颜色分类

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

  9. LeetCode 75. 颜色分类(Sort Colors)

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

  10. Leetcode 75. 颜色分类 (每日一题 20210817)

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

最新文章

  1. Mysql备份还原数据库之mysqldump实例及参数详细说明
  2. SQL Server 数据库清除日志的方法
  3. 如何正确选择聚类算法? | CSDN博文精选
  4. qq邮箱mx服务器,电子邮箱如何设置域名MX记录
  5. Logon failed, use ctrl+c to cancel basic credential prompt. 错误
  6. uo和o的区别和用法_汉语拼音中,o与uo有什么区别
  7. 安卓自动化测试——rf
  8. 【BZOJ】【1038】【ZJOI2008】瞭望塔
  9. 关于myeclipse buildpath的jar包不能复制到tomcat lib下的问题
  10. Python爬虫 解析库的使用
  11. dataframe索引筛选_筛选的索引:性能分析和隐藏成本
  12. daily scrum 10.31
  13. 黑科技 —— Type-C 接口与 USB3.1
  14. 【每日算法Day 109】五大解法,带你深入了解完全背包方案数
  15. WINDOWS访问SAMBA提示没有权限
  16. 计算机专业英语单词完美打印,计算机专业英语词汇(完美排版_大容量打印版).pdf...
  17. GAN的评价指标IS和FID
  18. java导出eml_java 本地生成带附件的eml文件
  19. 【N32G457】从0到1打造一个私有化部署的家用式智能告警系统
  20. map返回另一个对象

热门文章

  1. [转]Windows10 中文版 英文语言包安装失败解决
  2. android expandablelistview 动画,的Android ExpandableListView使用动画
  3. Windows Media Player 播放.WMV文件破解许可证
  4. android translate 参数,关于安卓的TranslateAnimation的使用
  5. 最新主流 Markdown 编辑器推荐
  6. 原生js完成的五子棋人机大战
  7. ET框架6.0Demo运行学习笔记
  8. 计算机四则运算的原理,计算机组成原理第九讲(除法-补码运算规则及浮点四则运算)(科大罗克露)...
  9. IE tab for chrome
  10. python镜像安装教程_PIP镜像方式安装PYTHON包步骤