leetcode - 75. 颜色分类(java)

news/2024/11/17 18:30:54/

颜色分类

  • leetcode - 75. 颜色分类
    • 题目描述
    • 双指针
    • 代码演示
  • 双指针算法专题

leetcode - 75. 颜色分类

难度 - 中等
原题链接 - 颜色分类

题目描述

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
必须在不使用库内置的 sort 函数的情况下解决这个问题。

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

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

提示:
n == nums.length
1 <= n <= 300
nums[i] 为 0、1 或 2

在这里插入图片描述

双指针

该题为经典的荷兰国旗问题,由于题目本质是要我们将数分成三段。
具体步骤:
我们用L 和 R 卡住左边和边,左边放0,右边放1,中间位置放1,
遍历到0时放在左边,指针向右移动,继续比较
碰到1时,什么都不用做,继续向右比较,
碰到2时,放到右边。这样下来就分成了三层。
一次遍历就完成了。

代码演示

/** 
*分层
*/
public void sortColors(int[] nums) {//左边界,最开始左边没数据,用-1位置代替int l = -1;//右边没数据,初始化为数组长度int r = nums.length;//指针位置,比较int index = 0;while(index < r){if(nums[index] == 0){swap(nums,++l,index++);}else if(nums[index] == 1){index++;}else{swap(nums,index,--r);}}}//交换的方法void swap(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}

双指针算法专题

leetcode870. 优势洗牌

leetcode 881. 救生艇

leetcode 475. 供暖器


http://www.ppmy.cn/news/1022738.html

相关文章

Groovy学习笔记-3.Groovy数据类型

更多代码相关的内容可以参考&#xff1a;https://github.com/zclhit/groovy_learning/tree/main 数据类型 groovy在语言层面支持一套数据类型&#xff0c;提供了直接声明和特定的操作符&#xff0c;包括字符、正则和数字类型。也包括范围、列表和映射等。 我将会在这里使用g…

webstorm debug调试vue项目

1.运行npm&#xff0c;然后控制台会打印下图中的地址&#xff0c;复制local的地址 2.run–>Edit Configuration&#xff0c;如下图 3.设置测试项 4.在你需要的js段打好断点 5.在上边框的工具栏里面有debug运行&#xff0c;点击debug运行的图标运行即可

方案展示 | RK3588开发板Android12双摄方案

iTOP-RK3588开发板使用手册更新&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 ​RK3588开发板载4路MIPI CAMERA摄像头接口、MIPI CSI DPHY的4.5Gbps、2.5Gops的MIPI CSI CPHY&#xff0c;四路同时输入&#…

java启动硬编码对应的是什么?

在Java中&#xff0c;启动硬编码&#xff08;Hardcoding&#xff09;指的是在代码中直接使用具体的数值、字符串或其他常量值&#xff0c;而不是通过外部配置文件或变量来获取这些值。 启动硬编码的示例&#xff1a; javaCopy code public class ExampleClass { public stati…

机器学习 day32(神经网络如何解决高方差和高偏差)

解决高偏差和高方差的新方法 之前&#xff0c;我们需要通过选取多项式次数以及正则化参数λ&#xff0c;来平衡高方差和高偏差 只要训练集不是特别大&#xff0c;那么一个大型的神经网络总能很好的适应训练集&#xff0c;即它的Jtrain很低由此可以得出&#xff0c;若要减小Jt…

RabbitMQ 79b5ad38df29400fa52ef0085a14b02f

RabbitMQ 一、什么是消息队列 消息队列可以看作是一个存放消息的容器&#xff0c;其中&#xff0c;生产者负责生产数据到消息队列中&#xff0c;而消费者负责消费数据。消息队列是分布式系统中重要的组件&#xff0c;目前使用较多的消息队列有ActiveMQ&#xff0c;RabbitMQ&am…

tkinter基本控件

1、Label标签、Button按钮 import tkinter as tkwindow tk.Tk() window.title(my window) window.geometry(400x100) var tk.StringVar() l tk.Label(window, textvariablevar, bggreen, font(Arial, 12), width15, height2) l.pack() on_hit Falsedef hit_me():global on_…

嵌入式是大坑吗?

嵌入式不是坑&#xff0c;但里面遍地是坑。一不小心&#xff0c;你就会掉进去。 嵌入式覆盖的范围太广&#xff0c;低端的产品太多。 单片机叫嵌入式&#xff0c;开发板叫嵌入式&#xff0c;摄像头叫嵌入式&#xff0c;手机、平板电脑、通讯基站、无人机、机器人、自动驾驶汽…