力扣最热一百题——颜色分类
目录
题目链接:75. 颜色分类 - 力扣(LeetCode)
题目描述
示例
提示:
解法一:不要脸用sort
Java写法:
运行时间
解法二:O1指针
Java写法:
重点
运行时间
C++写法:
运行时间
时间复杂度和空间复杂度
总结
题目链接:75. 颜色分类 - 力扣(LeetCode)
注:下述题目描述和示例均来自力扣
题目描述
给定一个包含红色、白色和蓝色、共 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.length1 <= n <= 300nums[i]为0、1或2
进阶:
- 你能想出一个仅使用常数空间的一趟扫描算法吗?

解法一:不要脸用sort
既然题目都说了不让用sort,那么我这种一生逆骨的选手是必须要用一下的嘿嘿。
Java写法:
class Solution {public void sortColors(int[] nums) {Arrays.sort(nums);}
}
运行时间

真爽啊哈哈哈哈哈哈哈哈哈

解法二:O1指针
Java写法:
class Solution {public void sortColors(int[] nums) {// p0用于交换0int p0 = 0;// p1用于交换1int p1 = 0;// 进入交换逻辑for (int i = 0; i < nums.length; i++) {if (nums[i] == 1) {// 遇到1int temp = nums[i];nums[i] = nums[p1];nums[p1] = temp;p1++;} else if (nums[i] == 0) {// 遇到0int temp = nums[i];nums[i] = nums[p0];nums[p0] = temp;// 确保在遇到 0 时,p0 和 p1 之间的元素都是 1if (p0 < p1) {temp = nums[i];nums[i] = nums[p1];nums[p1] = temp;}p0++;p1++;}}}
}
重点
-
变量定义:
p0:用于指向0的位置。p1:用于指向1的位置。
-
循环遍历数组:
- 当遍历到元素
1时,代码会将其与p1位置的元素交换,然后p1向右移动一位。 - 当遍历到元素
0时,代码会将其与p0位置的元素交换,然后p0向右移动一位,p1也向右移动。
- 当遍历到元素
-
if (p0 < p1)逻辑:- 这一条件判断是为了确保在遇到
0时,p0和p1之间的元素都是1。 - 这样做的目的是在
0被移动到前面时,同时也要把1移动到p1的位置,确保1被正确放在0的右边。
- 这一条件判断是为了确保在遇到
-
避免重复处理:
- 只有在
p0小于p1时,才进行这次交换,因为这表示p0和p1之间有1,需要将当前的0和1进行交换,以保持排序。
- 只有在
运行时间

C++写法:
class Solution {
public:void sortColors(vector<int>& nums) {// p0 用于交换 0int p0 = 0;// p1 用于交换 1int p1 = 0;// 进入交换逻辑for (int i = 0; i < nums.size(); i++) {if (nums[i] == 1) {// 遇到 1swap(nums[i], nums[p1]);p1++;} else if (nums[i] == 0) {// 遇到 0swap(nums[i], nums[p0]);// 确保在遇到 0 时,p0 和 p1 之间的元素都是 1if (p0 < p1) {swap(nums[i], nums[p1]);}p0++;p1++;}}}
};
运行时间

时间复杂度和空间复杂度
![]() | ![]() |
总结
Ez就完事啦~~~~~
相关文章:
力扣最热一百题——颜色分类
目录 题目链接:75. 颜色分类 - 力扣(LeetCode) 题目描述 示例 提示: 解法一:不要脸用sort Java写法: 运行时间 解法二:O1指针 Java写法: 重点 运行时间 C写法:…...
2024年工业制造企业CRM研究报告:需求清单、市场格局、案例分析
我国是世界上产业体系最完备的国家,拥有全球规模最大、门类最齐全的生产制造体系,在500种主要工业产品中,有四成以上产品产量位居全球第一。2023年制造业增加值达33万亿元,占世界的比重稳定在30%左右,我国制造业增加值…...
Spring MVC参数接收 总结
1. 简介 Spring MVC可以简化从前端接收参数的步骤。 2. Param传参 通过设定函数入参和添加标记来简化接受: //参数接收 RequestMapping("product") ResponseBody //接受/product?productgoods&id123 //1.名称必须相同,2.不传值不会不…...
Docekrfile和docker compose编写指南及注意事项
Dockerfile 基础语法 我们通过编写dockerfile,将每一层要做的事情使用语法固定下来,之后运行指令就可以通过docker来制作自己的镜像了。 构建镜像的指令:docker build /path -t imageName:tag 注意,docker build后的path必须是dockerfile…...
VITS源码解读6-训练推理
1. train.py 1.1 大体流程 执行main函数,调用多线程和run函数执行run函数,加载日志、数据集、模型、模型优化器for循环迭代数据batch,每次执行train_and_evaluate函数,训练模型 这里需要注意,源码中加载数据集用的分…...
力扣 简单 104.二叉树的最大深度
文章目录 题目介绍解法 题目介绍 解法 如果知道了左子树和右子树的最大深度 l 和 r,那么该二叉树的最大深度即为max(l,r)1,而左子树和右子树的最大深度又可以以同样的方式进行计算。因此我们可以用递归的方法来计算二叉树的最大深度。具体而言ÿ…...
单片机长短按简单实现
单片机长短按简单实现 目录 单片机长短按简单实现1 原理2 示例代码2.1 按键实现 3 测试log4 其他实现方式 1 原理 按键检测和处理的步骤如下: 1:定时扫描按键(使用定时器定时扫描,也可以用软件延时或者系统心跳之类的方式&#…...
如何用好通义灵码企业知识库问答能力?
通义灵码企业版:通义灵码企业标准版快速入门_智能编码助手_AI编程_智能编码助手通义灵码(Lingma)-阿里云帮助中心 通义灵码提供了基于企业知识库的问答检索增强的能力,在开发者使用通义灵码 IDE 插件时,可以结合企业知识库内上传的文档、文件…...
C语言自定义类型:联合体
目录 前言一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体的⼀个练习 总结 前言 前面我讲到C语言中的自定义结构——结构体,其实C语言中的自定义结构不只有结构体,还有枚举和联合体&am…...
【JavaEE】——线程池大总结
阿华代码,不是逆风,就是我疯, 你们的点赞收藏是我前进最大的动力!!希望本文内容能够帮助到你! 目录 引入:问题引入 一:解决方案 1:方案一——协程/纤程 (1…...
编程中为什么使用0和1表示状态
前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 我们看到很多项目都使用0和1表示某些状态信息,具体含义取决于上下文。以下是一些常见的用法: 布尔值&#x…...
C++入门基础知识90(实例)——实例15【求两数的最大公约数】
成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于求两数的最大公约数的相关内容ÿ…...
自动化办公-Python-os模块的使用
os.path 模块的使用 在指定文件路径时,由于操作系统的差异,直接使用硬编码的路径可能会导致程序在不同平台上无法正常运行。为了解决这个问题,Python 提供了 os.path 模块,它包含了一系列用于路径操作的函数,可以帮助您…...
无人机之数据处理技术篇
一、数据采集 无人机通过搭载的各种传感器和设备,如GPS、加速度计、陀螺仪、磁力计、激光雷达(LiDAR)、高光谱相机(Hyperspectral)、多光谱相机(Multispectral)以及普通相机等,实时采集飞行过程中的各种数据。这些数据包括无人机的位置、速度、高度、姿态…...
828华为云征文|部署多功能集成的协作知识库 AFFiNE
828华为云征文|部署多功能集成的协作知识库 AFFiNE 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 AFFiNE3.1 AFFiNE 介绍3.2 AFFiNE 部署3.3 AFFiNE 使用 四、…...
c++(AVL树及其实现)
一、AVL树的概念 AVL树是最先发明的自平衡⼆叉查找树,AVL是⼀颗空树,或者具备下列性质的⼆叉搜索树:它的 左右子树都是AV树,且左右子树的高度差的绝对值不超过1。AVL树是⼀颗高度平衡搜索⼆叉树, 通过控制高度差去控…...
Cesium GIS项目关于湖泊识别与提取的实现
1. 引言 项目背景 随着遥感技术的发展,地理信息系统的应用越来越广泛。本项目旨在开发一个基于Cesium的地理信息系统,利用深度学习技术自动识别并显示湖泊的位置。 目标与意义 通过自动化处理大量遥感影像数据,提高湖泊监测的效率和准确性,为水资源管理和环境保护提供支…...
两个圆形 一个z里面一个z外面,z里面的大,颜色不同 html
两个圆形 一个z里面一个z外面,z里面的大,颜色不同 html <!DOCTYPE html> <html> <head> <style> .outer-circle {width: 150px;height: 150px;border-radius: 50%;background-color: #ff9999; /* 外圆的颜色 */position: relat…...
【Power Query】M函数-table
M函数-table 添加列(AddColumn):条件语句(If..then..else):容错语句(try..otherwise): 排序(ReorderColumns):筛选(Selec…...
uni-app 封装websocket 心跳检测,开箱即用
class websocketUtils {constructor(url, needbeat, options {}) {this.needbeat needbeat;this.url url;this.options options;this.ws null;this.heartbeatInterval options.heartbeatInterval || 10000; // 心跳间隔,默认为10秒 this.reconnectInterval …...
STM32红外遥控器设计与多协议控制实现
基于STM32的万能红外遥控器设计与实现1. 项目概述1.1 系统架构本设计采用STM32F103RCT6作为主控芯片,构建了一个多功能红外遥控系统。系统架构包含以下核心模块:主控模块:STM32F103RCT6微控制器人机交互模块:1.44寸LCD显示屏 4x4…...
【网络】Wireshark实战:TCP连接异常之RST报文深度解析
1. 认识TCP的RST报文:网络世界的紧急刹车 第一次在Wireshark里看到RST标志位时,我正盯着满屏的TCP握手包发呆。那个鲜红的[RST, ACK]就像交通信号灯突然变红,让原本流畅的数据传输戛然而止。简单来说,RST(Reset&#x…...
Mastering Text Tokenization for Large Language Models: From Words to Embeddings
1. 文本标记化的核心概念 你可能已经听说过ChatGPT这类大语言模型的神奇能力,但你知道它们是如何"读懂"人类文字的吗?秘密就藏在文本标记化(Tokenization)这个关键步骤里。想象一下,我们要教一个完全不懂中…...
保姆级教程:在Ubuntu 20.04上用Docker搞定GPUStack,让Atlas 300I Duo推理卡跑通LLM
保姆级教程:Ubuntu 20.04Docker部署GPUStack全流程指南(Atlas 300I Duo专版) 最近在折腾Atlas 300I Duo这块推理卡的朋友应该都深有体会——虽然硬件性能强悍,但要让它在Ubuntu系统上顺利跑起大语言模型,光驱动和依赖就…...
高效文件同步:SyncTrayzor在Windows上的完整解决方案
高效文件同步:SyncTrayzor在Windows上的完整解决方案 【免费下载链接】SyncTrayzor Windows tray utility / filesystem watcher / launcher for Syncthing 项目地址: https://gitcode.com/gh_mirrors/sy/SyncTrayzor SyncTrayzor是Windows平台上最实用的Syn…...
从“机器会思考”的执念说起,聊聊神经网络到底是个啥(下篇)
一、神经网络的类型:别被名字搞晕,核心就几种 现在叫“神经网络”的东西五花八门,但绝大多数都是从下面这几类衍生出去的。 1. 前馈神经网络(FNN)—— 最朴素的直筒子 数据从输入层进,经过若干隐藏层&am…...
YimMenu终极指南:免费GTA5辅助工具完整使用教程
YimMenu终极指南:免费GTA5辅助工具完整使用教程 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...
OpenClaw+GLM-4.7-Flash:智能客服机器人搭建指南
OpenClawGLM-4.7-Flash:智能客服机器人搭建指南 1. 为什么选择这个技术组合? 去年夏天,我接手了一个小团队的客服系统改造项目。团队只有5个人,却要处理日均300的客户咨询。传统客服系统要么太贵,要么定制化程度不够…...
为什么Stable Diffusion选择VQ-GAN?深入解析LDM背后的图像压缩技术
为什么Stable Diffusion选择VQ-GAN?深入解析LDM背后的图像压缩技术 在生成式AI领域,Stable Diffusion凭借其出色的图像生成质量和开源特性迅速成为行业标杆。但很少有人注意到,这个强大模型的核心竞争力之一,其实隐藏在它的第一阶…...
终极指南:如何利用Reor AI智能笔记应用的本地化语义搜索与智能推荐功能
终极指南:如何利用Reor AI智能笔记应用的本地化语义搜索与智能推荐功能 【免费下载链接】reor Self-organizing AI note-taking app that runs models locally. 项目地址: https://gitcode.com/GitHub_Trending/re/reor Reor是一款革命性的AI智能笔记应用&am…...

