LeetCode 75. 颜色分类(Sort Colors)
题目描述
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
注意:
不能使用代码库中的排序函数来解决这道题。
示例:
输入: [2,0,2,1,1,0] 输出: [0,0,1,1,2,2]
进阶:
- 一个直观的解决方案是使用计数排序的两趟扫描算法。
首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。 - 你能想出一个仅使用常数空间的一趟扫描算法吗?
解题思路
用双指针的思想,维护左右指针分别指向数组首尾,对数组从左向右进行遍历:
- 若遇到0,则与左指针指向元素交换,并将左指针右移一位
- 若遇到2,则与右指针指向元素交换,并将右指针左移一位,因为交换过来的元素仍可能为2,所以再次对此元素进行判断
代码
1 class Solution { 2 public: 3 void sortColors(vector<int>& nums) { 4 int right = nums.size() - 1, left = 0; 5 for(int i = 0; i <= right; i++){ 6 if(nums[i] == 0) 7 swap(nums[i], nums[left++]); 8 else if(nums[i] == 2){ 9 swap(nums[i], nums[right--]); 10 i--; 11 } 12 } 13 } 14 };
转载于:https://www.cnblogs.com/wmx24/p/9542659.html
LeetCode 75. 颜色分类(Sort Colors)相关推荐
- leetcode系列-颜色分类(sort colors)
分类:array 难度:medium 颜色分类 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 ...
- LeetCode - 75 颜色分类
给定一个包含红色.白色和蓝色.共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列.我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...
- [Swift]LeetCode75. 颜色分类 | Sort Colors
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 算法系列——颜色分类(Sort Colors)
题目描述 题目链接:https://leetcode-cn.com/problems/sort-colors/ Given an array with n objects colored red, w ...
- leetcode —— 75. 颜色分类
给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...
- Leetcode 75. 颜色分类 (每日一题 20210817)
给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列.此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色.示例 ...
- leetcode 75. 颜色分类(双指针)
给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...
- LeetCode 75 颜色分类
题目描述 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色 的元素相邻,并按照红色.白色.蓝色顺序排列.此题中,我们使用整数 0. 1 和 2 分别表示红色.白色 ...
- 【leetcode】75.颜色分类(多种解法,超详细图文解析)
75. 颜色分类 难度中等 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,**原地**对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 ...
最新文章
- iOS 生成二维码/条形码
- 安波副教授:分布式人工智能进展与趋势
- Windows中的路由表和默认网关
- 【C 语言】字符串操作 ( 使用 数组下标 操作字符串 | 使用 char * 指针 操作字符串 )
- 最新版AnyDbTest数据库单元测试工具的下载地址
- Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能
- php mongodb连接数据库,PHP下 Mongodb 连接远程数据库的实例代码
- MVP群聊某美国公司的应聘试题(压死九个还是一个)
- 位向量(bit vector)(算法导论第十一章11.1-2)
- 商务计算机的购置方案,电子采购方案的实施.ppt
- 20_python基础—面向对象-私有属性和私有方法
- java checker_java 英文单词纠正校验框架(Word Checker)
- 基于mfc的图形学实例_前端图形学(二十)——退后!!我要开始进入3D世界了...
- Windows 7 的一些使用技巧
- 三、定义主从实体基类
- lopatkin俄大神精简中文系统Windows 10 Enterprise 2016 LTSB 14393.577 x86-x64 ZH-CN PIP
- 2022-2027年中国双摄像头手机行业发展监测及投资战略研究报告
- 多多客api_订多多提供API
- Flink 实时数仓伪分布虚拟机 (所有组件部署完成)
- esd win10 /win8 最简单快速的安装方法 双系统、vhd、wimboot+VHD