Leetcode 刷题 - 排序(day4)_颜色排序
荷兰国旗问题
荷兰国旗包含三种颜色:红、白、蓝。
有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。
1. 按颜色进行排序
75. Sort Colors (Medium)
Input: [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]
题目描述:只有 0/1/2 三种颜色。
项目源码
package order;/*** @Author Janson* @Date 2022/2/17 11:58* @Version 1.0*//*** 荷兰国旗问题* 荷兰国旗包含三种颜色:红、白、蓝。** 有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它* 其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:* 小于切分元素、等于切分元素、大于切分元素,* 而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。* 1. 按颜色进行排序* 75. Sort Colors (Medium)** Leetcode / 力扣** Input: [2,0,2,1,1,0]* Output: [0,0,1,1,2,2]* 题目描述:只有 0/1/2 三种颜色。*/
public class Order4_sortColors {public static void main(String[] args) {int[] nums = new int[]{2,0,2,1,1,0};/*** 方法思路:* 双指针法进行排序,遍历数组,将值最大的交换在数组尾部位置* 将值最小的交换在开头位置,值居中的不做处理,继续遍历**/int left = -1,traver = 0,right = nums.length;while (traver < right){if (nums[traver] == 0){swap(nums,++left,traver++);}else if(nums[traver] == 2){swap(nums,--right,traver);}else {traver++;}}for (int num: nums) {System.out.print(num + " ");}}private static void swap(int[] nums,int traver,int right){int temp = 0;temp = nums[traver];nums[traver] = nums[right];nums[right] = temp;}
}
Leetcode 刷题 - 排序(day4)_颜色排序相关推荐
- LeetCode刷题(Python)——在排序数组中查找元素的第一个和最后一个位置
题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值 ...
- 【Leetcode刷题篇】leetcode75 颜色分类
给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...
- LeetCode刷题实战81:搜索旋转排序数组 II
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- list元素求和_LeetCode刷题实战82:删除排序链表中的重复元素 II
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- C#LeetCode刷题-数组
数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...
- LeetCode刷题C++实录
LeetCode刷题C++实录 1. 两数之和 121. 买卖股票的最佳时机 382. 链表随机节点 622. 设计循环队列 623. 在二叉树中增加一行 640. 求解方程 761. 特殊的二进制序 ...
- C#LeetCode刷题-排序
排序篇 # 题名 刷题 通过率 难度 56 合并区间 31.2% 中等 57 插入区间 30.4% 困难 75 颜色分类 48.6% 中等 147 对链表进行插入排序 50.7% 中等 148 排序链 ...
- LeetCode刷题笔记-动态规划-day4
文章目录 LeetCode刷题笔记-动态规划-day4 55. 跳跃游戏 1.题目 2.解题思路 3.代码 45. 跳跃游戏 II 1.题目 2.解题思路 3.代码 LeetCode刷题笔记-动态规划 ...
- php算法在线刷题,c,算法_每日一道算法:leetcode 刷题碰到的问题。,c,算法 - phpStudy...
每日一道算法:leetcode 刷题碰到的问题. 这是题目: Given an unsorted array nums, reorder it such that nums[0] < nums[ ...
- LeetCode刷题Python实录
使用Python的LeetCode刷题 前言 题目 1408. 数组中的字符串匹配 508. 出现次数最多的子树元素和 1089. 复写零 剑指 Offer 14- I. 剪绳子 1175. 质数排列 ...
最新文章
- 小虎计算器-技术支持
- VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT
- Hi3516A开发--安装交叉编译器
- 利用chunk重设大小攻击堆
- java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
- 澎思科技新出行人再识别(ReID)算法,刷新三大数据集最高记录
- 1×1的卷积核在卷积层的作用----网络中的网络
- 荣耀手机动态修改imei信息
- Python实现简单p2p下载
- Python(基础)输出与输入
- 云计算数据中心运维管理要点
- Java练习题【新】
- linux文件名带星号,Linux安装之bash星号用法
- 百度网盘网页版倍速播放
- android 对话框 美化,Android修改Dialog样式
- FTP上传下载端口号
- ARMv8 Cortex-a 编程向导手册学习_2.ARMv8-A 寄存器
- java nanotime 重复_关于Java中System.currentTimeMillis和System.nanoTime的错误认识
- 打字时覆盖下一个字怎么办
- 【Python爬虫】爬取ppt素材