75. 颜色分类(图解)
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. 颜色分类(图解)相关推荐
- 【leetcode】75.颜色分类(多种解法,超详细图文解析)
75. 颜色分类 难度中等 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,**原地**对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 ...
- Leetcode算法Java全解答--75. 颜色分类
Leetcode算法Java全解答–75. 颜色分类 文章目录 Leetcode算法Java全解答--75. 颜色分类 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 给定 ...
- 75. 颜色分类(C++实现)
文章目录 题目 思路--三指针 题目 题目链接:75. 颜色分类) 思路–三指针 其实颜色分类就是对 0 1 2 这三个数字进行排序,但是排序都是有效率之分的,我们希望可以通过一种高效的方法去排序这三 ...
- LeetCode - 75 颜色分类
给定一个包含红色.白色和蓝色.共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列.我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...
- 2021.1.9每日复习 75.颜色分类(复习快速排序)+ 77.组合(回溯算法)
***75.颜色分类(复习快速排序) class Solution {public void sortColors(int[] nums) {//方法一:冒泡排序// int n = nums.len ...
- 75. 颜色分类(荷兰国旗问题)
75. 颜色分类(荷兰国旗问题) 题目 解题思路 代码 题目 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中 ...
- LeetCode 73矩阵置零74搜素二维矩阵75颜色分类
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...
- leetcode菜狗入门 | 75. 颜色分类
颜色分类 题目描述 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示 ...
- LeetCode 75. 颜色分类(Sort Colors)
题目描述 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色 ...
- Leetcode 75. 颜色分类 (每日一题 20210817)
给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列.此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色.示例 ...
最新文章
- Mysql备份还原数据库之mysqldump实例及参数详细说明
- SQL Server 数据库清除日志的方法
- 如何正确选择聚类算法? | CSDN博文精选
- qq邮箱mx服务器,电子邮箱如何设置域名MX记录
- Logon failed, use ctrl+c to cancel basic credential prompt. 错误
- uo和o的区别和用法_汉语拼音中,o与uo有什么区别
- 安卓自动化测试——rf
- 【BZOJ】【1038】【ZJOI2008】瞭望塔
- 关于myeclipse buildpath的jar包不能复制到tomcat lib下的问题
- Python爬虫 解析库的使用
- dataframe索引筛选_筛选的索引:性能分析和隐藏成本
- daily scrum 10.31
- 黑科技 —— Type-C 接口与 USB3.1
- 【每日算法Day 109】五大解法,带你深入了解完全背包方案数
- WINDOWS访问SAMBA提示没有权限
- 计算机专业英语单词完美打印,计算机专业英语词汇(完美排版_大容量打印版).pdf...
- GAN的评价指标IS和FID
- java导出eml_java 本地生成带附件的eml文件
- 【N32G457】从0到1打造一个私有化部署的家用式智能告警系统
- map返回另一个对象
热门文章
- [转]Windows10 中文版 英文语言包安装失败解决
- android expandablelistview 动画,的Android ExpandableListView使用动画
- Windows Media Player 播放.WMV文件破解许可证
- android translate 参数,关于安卓的TranslateAnimation的使用
- 最新主流 Markdown 编辑器推荐
- 原生js完成的五子棋人机大战
- ET框架6.0Demo运行学习笔记
- 计算机四则运算的原理,计算机组成原理第九讲(除法-补码运算规则及浮点四则运算)(科大罗克露)...
- IE tab for chrome
- python镜像安装教程_PIP镜像方式安装PYTHON包步骤