当前位置: 首页 > news >正文

Leecode热题100-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] 为 01 或 2

进阶:

  • 你能想出一个仅使用常数空间的一趟扫描算法吗?

写就写进阶的解,这还不简单,直接上代码,看不懂可以私信或评论,第一时间解答

class Solution {/**这个题目也是听起来比较唬人,但是这个仔细想想如果按照数字来看,不就是红色最小,白色居中,蓝色最大吗这是啥问题?荷兰国旗啊,下面我们用荷兰国旗问题解一下,这就是荷兰国旗里的Partition */public void sortColors(int[] nums) {/**如果就一个那就直接返回吧,没啥可操作的*/if(nums.length == 1) {return;}/**开始进行划分,redLast表示确定的红的最后一个位置,目前还没有,blueFirst表示确定的蓝色的第一个位置,目前也还没有*/int redLast = -1;int blueFirst = nums.length;int cur = 0;while(cur < blueFirst) {/**等于的不管 */if(nums[cur] == 1) {cur ++;/**如果是0和红色的最后一个位置的下一个交换,扩充红色区,因为换的是之前的位置,所以这里cur不用验证,也直接++ */} else if(nums[cur] == 0) {swap(nums, cur++, ++redLast);} else {/**如果是2,就和蓝色的最后一个位置的前一个交换,扩充红色区,但是这个是从后面缓过来的,需要看看*/swap(nums, cur, --blueFirst);}}}public void swap(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}
}

相关文章:

Leecode热题100-75.颜色分类

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

408算法题leetcode--第22天

200. 岛屿数量 200. 岛屿数量时间&#xff1a;O(mn)&#xff1b;空间&#xff1a;O(min(m, n))&#xff0c;队列最大入队个数&#xff0c;可以想象从左上到右下&#xff0c;第一次入队1个&#xff0c;第二次出队1&#xff0c;入队2&#xff0c;第三次出队2&#xff0c;入队3……...

dubbo微服务

一.启动nacos和redis 1.虚拟机查看是否开启nacos和redis docker ps2.查看是否安装nacos和redis docker ps -a3.启动nacos和redis docker start nacos docker start redis-6379 docker ps二.创建三个idea的maven项目 1.第一个项目dubboapidemo 2.1.1向pom.xml里添加依赖 …...

如何在 DAX 中计算多个周期的移动平均线

在 DAX 中计算移动聚合很容易。但是&#xff0c;计算一段时间内的移动平均值时会有一些陷阱。由于其中一些陷阱是定义问题&#xff0c;因此我们必须小心&#xff0c;不要选择错误的方法。让我们看看细节。欢迎来到雲闪世界。 添加图片注释&#xff0c;不超过 140 字&#xff08…...

微信小程序 图片的上传

错误示范 /*从相册中选择文件 微信小程序*/chooseImage(){wx.chooseMedia({count: 9,mediaType: [image],sourceType: [album],success(res) {wx.request({url:"发送的端口占位符",data:res.tempFiles[0].tempFilePath,method:POST,success(res){//请求成功后应该返…...

软件测试人员发现更多程序bug

软件测试人员发现更多程序bug 1. 理解需求和业务&#xff0c;需求评审时候发现bug 熟悉了产品的业务流程、才能迅速找出软件中存在的一些重要的缺陷&#xff0c;发现的软件缺陷才是有价值的。否则即使你能找到一些软件缺陷&#xff0c;那也是纯软件的缺陷&#xff0c;价值不大…...

Nagle 算法:优化 TCP 网络中小数据包的传输

1. 前言 在网络通信中&#xff0c;TCP&#xff08;传输控制协议&#xff09;是最常用的协议之一&#xff0c;广泛应用于各种网络应用&#xff0c;如网页浏览、文件传输和在线游戏等。然而&#xff0c;随着互联网的普及&#xff0c;小数据包的频繁传输成为一个不容忽视的问题。…...

C#入门教程

目录 1.if分支语句 2.面向对象 3.static简单说明 1.if分支语句 我们的这个C#里面的if语句以及这个if-else语句和C语言里面没有区别&#xff0c;就是打这个输出上面的方式不一样&#xff0c;c#里面使用的是这个console.writeline这个指令&#xff0c;其他的这个判断逻辑都是一…...

【MySQL报错】---Data truncated for column ‘age‘ at row...

目录 一、前言二、问题分析三、解决办法 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进哦~ 博客主页链接点这里–>&#xff1a;权权的博客主页链接 二、问题分析 问题一修改表结构 XXX 为 not n…...

Go基础学习08-并发安全型类型-通道(chan)深入研究

文章目录 chan基础使用和理解通道模型&#xff1a;单通道、双通道双向通道单向通道单向通道的作用 缓冲通道和非缓冲通道数据发送和接收过程缓冲通道非缓冲通道 通道基本特性通道何时触发panicChannel和Select结合使用Select语句和通道的关系Select语句的分支选择规则有那些Sel…...

some 蓝桥杯题

12.反异或01串 - 蓝桥云课 (lanqiao.cn) #include "bits/stdc.h" #define int long long using namespace std; char c[10000000]; char s[10000000]; int cnt,Ans,mr,mid; int maxi; int p[10000000],pre[10000000]; signed main() {ios::sync_with_stdio(0);cin.t…...

[linux 驱动]input输入子系统详解与实战

目录 1 描述 2 结构体 2.1 input_class 2.2 input_dev 2.4 input_event 2.4 input_dev_type 3 input接口 3.1 input_allocate_device 3.2 input_free_device 3.3 input_register_device 3.4 input_unregister_device 3.5 input_event 3.6 input_sync 3.7 input_se…...

2023_Spark_实验十:Centos_Spark Local模式部署

参考这篇博客&#xff1a;【Centos8_配置单节点伪分布式Spark环境】_centos8伪分布式环境搭建-CSDN博客...

pyecharts-快速入门

pyecharts文档&#xff1a;渲染图表 - pyecharts - A Python Echarts Plotting Library built with love. pyecharts-gallery文档&#xff1a;中文简介 - Document (pyecharts.org) 一、快速入门案例 from pyecharts.charts import Barbar Bar() bar.add_xaxis(["衬衫…...

vue3打包疯狂报错

打包的时候报错很多Cannot find name ‘xxx‘ 。 但是npm run dev 是运行正常的。 解决方法&#xff1a;package.json中的vue-tsc --noEmit 删掉就可以了。 例如&#xff1a; 这是原来的 {"scripts": {"dev": "vite","build": &quo…...

STM32 软件触发ADC采集

0.91寸OLED屏幕大小的音频频谱&#xff0c;炫酷&#xff01; STM32另一个很少人知道的的功能——时钟监测 晶振与软件的关系&#xff08;深度理解&#xff09; STM32单片机一种另类的IO初始化方法 ADC是一个十分重要的功能&#xff0c;几乎任何一款单片机都会包含这个功能&a…...

Android SystemUI组件(08)睡眠灭屏 锁屏处理流程

该系列文章总纲链接&#xff1a;专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节持续迭代之前章节的思维导图&#xff0c;主要关注左侧上方锁屏分析部分 睡眠灭屏 即可。 Power按键的处理逻辑最终是由PhoneWindowManager来完…...

C# 表达式与运算符

本课要点&#xff1a; 1、表达式的基本概念 2、常用的几种运算符 3、运算符的优先级 4、常见问题 一 表达式 表达式是由运算符和操作数组成的。、-、*和/等都是运算符&#xff0c;操作数包括文本、常量、变量和表达式等。 二 算术运算符 2.1 算术运算符的使用 三 常见错误 …...

SpringBoot--最大连接数和最大并发数

原文网址&#xff1a;SpringBoot--最大连接数和最大并发数-CSDN博客 简介 本文介绍SpringBoot的最大连接数和最大并发数。 配置 SpringBoot默认使用tomcat处理请求。tomcat可以指定连接数、线程数等配置。 server:tomcat:# 请求处理线程都在使用中时&#xff0c;新连接请求…...

CF687D Dividing Kingdom II 题解

Description 给定一个 n n n 个点、 m m m 条边的图&#xff0c;有 q q q 次询问&#xff0c;每次询问一个 [ l , r ] [l,r] [l,r] 的区间&#xff0c;求将 n n n 个点分为两个部分后&#xff0c;编号在 [ l , r ] [l,r] [l,r] 内的边中&#xff0c;两端点属于同一部分的…...

用手机遥控电脑演讲:开源项目Presentation-Control部署与实战指南

1. 项目概述与核心价值最近在准备一个重要的线上技术分享&#xff0c;过程中遇到了一个几乎所有演讲者都会头疼的问题&#xff1a;如何优雅地控制幻灯片播放&#xff0c;同时又能自如地操作电脑上的其他演示工具&#xff0c;比如代码编辑器、终端或者在线Demo&#xff1f;传统的…...

从单片机寄存器到多线程标志:volatile关键字的5个硬核使用场景详解

从单片机寄存器到多线程标志&#xff1a;volatile关键字的5个硬核使用场景详解 在嵌入式系统和并发编程的世界里&#xff0c;volatile关键字就像一位沉默的守护者&#xff0c;确保编译器不会自作聪明地优化掉那些看似冗余但实际上至关重要的代码。对于习惯了高层抽象语言的开发…...

VS Code 高效开发:从 launch.json 变量替换到 task.json 自动化构建

1. 从零开始配置 VS Code 调试环境 第一次打开 VS Code 的调试面板时&#xff0c;很多开发者都会感到无从下手。其实配置调试环境并不复杂&#xff0c;关键是要理解 launch.json 文件的作用。这个文件就像是调试器的"说明书"&#xff0c;告诉 VS Code 如何启动和连接…...

别再让FTP匿名登录成后门!手把手教你加固vsftpd服务(附CentOS 7实战配置)

企业级vsftpd安全加固实战指南&#xff1a;从匿名登录风险到全方位防护 FTP服务作为企业文件传输的经典解决方案&#xff0c;至今仍在许多组织的IT架构中扮演重要角色。然而&#xff0c;默认配置下的vsftpd服务往往隐藏着致命的安全隐患——匿名登录功能如同一扇未上锁的后门&a…...

龙芯2k0300 - 智能车走马观碑组VL53L0X驱动移植

---------------------------------------------------------------------------------------------------------------------------- 开发板 &#xff1a;久久派开发板eMMC &#xff1a;8GBDDR4 &#xff1a;512MBu-boot &#xff1a;u-boot 2022.04linux &#xff1a;6.12roo…...

ISO14443协议扫盲:别再只盯着‘读卡号’,APDU才是智能卡应用的灵魂

ISO14443协议进阶指南&#xff1a;从读卡号到APDU指令深度解析 当你第一次把卡片贴近读卡器&#xff0c;看到屏幕上跳出那串UID号码时&#xff0c;那种成就感确实令人兴奋。但很快你会发现&#xff0c;这串数字就像一扇紧闭的大门——你知道门后藏着更多可能性&#xff0c;却找…...

如何用Obsidian主页插件打造你的专属数字工作台?

如何用Obsidian主页插件打造你的专属数字工作台&#xff1f; 【免费下载链接】obsidian-homepage Obsidian homepage - Minimal and aesthetic template (with my unique features) 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-homepage 你是否厌倦了每次打…...

为什么你的Agent总在Adobe全家桶前卡死?:独家披露Adobe UXP沙箱逃逸+DOM Bridge双向通信协议逆向成果

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Adobe UXP沙箱机制与Agent操作失能的根源诊断 Adobe UXP&#xff08;Unified Extensibility Platform&#xff09;为插件提供了强隔离的运行时沙箱环境&#xff0c;其核心设计目标是保障宿主应用&#…...

从IR压降到远程采样:大电流PCB供电设计的实战经验与陷阱规避

1. 项目背景与问题浮现几年前&#xff0c;我参与了一个项目&#xff0c;主电源是一个标准的开放式机架电源&#xff0c;需要为一个位于机箱内相对较远的模块提供5V、约20A的直流电。最初的供电路径设计是依靠PCB走线&#xff0c;我们使用了1盎司铜厚的板材。问题很快就出现了&a…...

Hermes-Agent 智能体核心能力与实战效能深度评测

在构建自动化工作流或智能客服系统时&#xff0c;开发者最常遇到的痛点往往不是模型本身不够聪明&#xff0c;而是“记不住”和“乱执行”。很多时候&#xff0c;一个智能体在前几轮对话中还逻辑清晰&#xff0c;一旦上下文拉长&#xff0c;就开始遗忘关键约束&#xff0c;或者…...