Leetcode75. 颜色分类
Leetcode75. 颜色分类
题目:
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
注意:
不能使用代码库中的排序函数来解决这道题。
示例:
输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]
进阶:
一个直观的解决方案是使用计数排序的两趟扫描算法。
首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。
你能想出一个仅使用常数空间的一趟扫描算法吗?
题解:
- 初始化0的最右边界:i=0i = 0i=0。在整个算法执行过程中 nums[idx < i] = 0.
- 初始化2的最左边界 :j=n−1j = n - 1j=n−1。在整个算法执行过程中 nums[idx > j] = 2.
- 初始化当前考虑的元素序号 :curr = 0.
While curr<=p2curr <= p2curr<=p2:
- 若 nums[curr]=0nums[curr] = 0nums[curr]=0 :交换第 currcurrcurr个 和 第 iii 个 元素,并将curr,icurr,icurr,i指针都向右移。
- 若 nums[curr]=2nums[curr] = 2nums[curr]=2 :交换第 currcurrcurr个和第 jjj 个元素,并将 jjj 指针左移 。
- 若 nums[curr]=1nums[curr] = 1nums[curr]=1 :将指针 currcurrcurr 右移。
java代码:
public static void sortColors(int[] nums) {int i = 0;int j = nums.length - 1;int curr = 0;int temp = 0;while (curr <= j) {if (nums[curr] == 0) {temp = nums[curr];nums[curr++] = nums[i];nums[i++] = temp;} else if (nums[curr] == 2) {temp = nums[curr];nums[curr] = nums[j];nums[j--] = temp;} else {curr++;}}}
Leetcode75. 颜色分类相关推荐
- LeetCode--75.颜色分类(三路快排,计数排序)
颜色分类(C) 1. 题目描述 2. 题目解析 3. C语言实现 3.1 三路快排法 3.2 计数排序法 1. 题目描述 难度:中等 2. 题目解析 这道题需要注意一下几点: 原地进行排序,不可以另外 ...
- [Swift]LeetCode75. 颜色分类 | Sort Colors
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- Leetcode--75. 颜色分类
给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...
- 【数据结构与算法】leetcode75.颜色分类
链接 题目: 给定一个包含红色.白色和蓝色.共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 我们使用整数 0. 1 和 2 分别表示红色 ...
- 【Leetcode刷题篇】leetcode75 颜色分类
给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...
- leetcode75 颜色分类
很多的排序算法如 冒泡 插入 什么的,都是基于比较的, 这题还可以通过 基于 数据下标的算法: 计数排序 来做 下面的解为 partition 的分区方法, 供参考: 思路: 0放左边 2方右边,遇 ...
- leetcode75颜色分类
解法一: class Solution {public:void sortColors(int A[], int n) {int second=n-1, zero=0; //second之后的全是2, ...
- 《LeetCode力扣练习》第75题 颜色分类 Java
<LeetCode力扣练习>第75题 颜色分类 Java 一.资源 题目: 给定一个包含红色.白色和蓝色.共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按 ...
- python 三指针解决颜色分类
颜色分类 给定一个包含红色.白色和蓝色,一共 n 个元素的数组, 原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列.此题中,我们使用整数 0. 1 和 2 分别表示红色.白色 ...
最新文章
- SAP RETAIL MM42进入商品的销售视图系统提示: No basic purchase price relevant to pricing found with schema RM0000
- 访问SAP时提示报错SAP GUI for Windows 720窗口
- 详细介绍Linux硬盘挂载步骤
- maven导入jar包时冲突的解决
- MyBatis使增删改不刷新二级缓存
- 关于 TypeScript 内 constructor signature 的一些失败尝试
- [jQuery]超出容器部分...
- fastReport 绑定DataBand数据源后还是打印出一条数据
- Netsuite Foreign Currency Revaluation 外币评估
- 【教程】InstallShield使用完全教程
- OSM获取城市路网数据及其矢量化
- 知乎热议最丑陋的数学公式:「四次方程求根」高票当选
- TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
- eNSP路由器启动不了
- 关于网络连接里无虚拟网络适配器的解决办法
- github上比较好用的第三方
- python查重算法_用Python实现通过哈希算法检测图片重复的教程
- Android Studio 调试技巧大全
- 视频压缩技术及安卓中用法
- 程序员之间最丧心病狂的鄙视链——编程语言篇
热门文章
- RDS认证辅导,如何申请RDS认证,RDS认证的模块由哪些部分组成
- 产品读书《创京东:刘强东亲述创业之路》
- 南京银行行长增持背后:连续2个季度业绩下滑,不良贷款规模增至60亿元
- 一个简单的生产排程软件
- 哪些企业使用CEGBU低代码平台能获得最大信息化投资回报率
- XFS:协同区块链,助力电商发展
- 【PostgreSQL】GIN索引安装与使用 - 全模糊匹配/数组匹配,PG批量插入上万随机生成数据,随机生成字符串/数组
- 利用python批量爬取网页图片_使用python来批量抓取网站图片
- adxl345取出值怎么算角度_adxl345怎样通过想,x,y,z的输出计算出角度值
- 未来一周天气变化(最高温度和最低温度)(图表以及详细的注释)