【每日一题】【技巧】【LeetCode热题 100】【力扣】75. 颜色分类 C++

news2024/11/13 16:28:50

力扣75. 颜色分类

75. 颜色分类

题目描述

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

必须在不使用库内置的 sort 函数的情况下解决这个问题。

样例 #1

样例输入 #1

nums = [2,0,2,1,1,0]

样例输出 #1

[0,0,1,1,2,2]

样例 #2

样例输入 #2

nums = [2,0,1]

样例输出 #2

[0,1,2]

提示

n = = n u m s . l e n g t h 1 < = n < = 300 n u m s [ i ] 为 0 、 1 或 2 n == nums.length\\ 1 <= n <= 300\\ nums[i] 为 0、1 或 2 n==nums.length1<=n<=300nums[i]012

做题思路

本题有个很巧的技巧称为油漆工算法。
首先设(新)数组全为2
如果遍历(旧)数组时候遇到小于2的情况了,那么说明有一个2肯定是错的
那么这时就将最前面的一个2换为1。
如果遍历(旧)数组时候遇到小于1的情况了,那么说明有一个1肯定是错的
那么这时候就把最前面的一个1换为0

刷油漆思路:

	// 刷油漆的思路,遍历每个元素刷次2,
	// 222222222222222222222
	// 碰到几个比2小的从前面刷几次1
	// 111111111111122222222
	// 碰到几个比1小的从前面刷几次0
	// 000000111111122222222

这里证明一下正确性:
首先看0的部分,遇到几次0其实就刷几次0,那么0的部分肯定为正确的。
遇到小于2的部分都刷为1了,但其实后面遇到小于1的部分都刷为0了。
意思就是(0的个数 + 1的个数) - 0的个数 ,最好就是1的个数。
所以1的个数也是对的。
因为1的个数和0的个数是对的,剩下的就是2了,所以2的个数也是对的。
然后又因为0和1都是从前往后并且1的判断在0前面,所以顺序肯定也是没问题。

时间复杂度分析

遍历一次 O ( N ) O(N) O(N)

伪代码

在这里插入图片描述

代码

class Solution {
public:
    void sortColors(vector<int>& nums) {
        int n = nums.size(),num;
        int n0 = 0 , n1 = 0;
        for(int i=0;i<n;i++){
            num = nums[i];
            nums[i] = 2;
            if(num < 2)nums[n1++] = 1;
            if(num < 1)nums[n0++] = 0;
        }
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1974306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

永久旋转 PDF 文件的 2 种简便方法

PDF 文件通常由扫描仪创建&#xff0c;用于呈现文档或书籍。当您输出 PDF 作品时&#xff0c;打开它&#xff0c;会发现有几页是颠倒的。 你该怎么办&#xff1f; 将这些页面倒置扫描&#xff0c;按顺序排列&#xff0c;最后创建正确的 PDF 文件&#xff1f; 当然&#xff0…

暑假第三周任务——天气预报

暑假第三周任务——天气预报 文章目录 暑假第三周任务——天气预报前言URL与APIAPI与URL的关系 获取网络请求首页搜索界面详情界面添加功能 浏览界面总结 前言 这个天气预报主要是通过申请网络请求来获取实时数据&#xff0c;来实现一个天气预报的功能&#xff0c;在这里主要是…

对优先级队列(堆)的理解

目录&#xff1a; 一. 优先级队列&#xff1a; 二. 优先级队列的模拟实现&#xff1a; 三.常用接口介绍: 一. 优先级队列&#xff1a; 1 概念&#xff1a; 队列是一种先进先出的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时…

红酒与爱情:浪漫时刻的佳酿

在爱情的世界里&#xff0c;红酒如同一首温柔的诗篇&#xff0c;轻轻诉说着浪漫与甜蜜。当定制红酒洒派红酒&#xff08;Bold & Generous&#xff09;与爱情相遇&#xff0c;它们共同绘制出一幅幅令人心醉的浪漫画卷&#xff0c;让每一刻都充满了无尽的柔情与温暖。 一、爱…

MLOPS工具集教程-快速入门MLflow

文章目录 一、什么是 MLOps&#xff1f;二、MLOps 工具有什么作用&#xff1f;三、免费开源 MLOps 工具和平台——MLflow3.1 MLflow介绍3.2 安装MLflow3.3启动MLflow3.4 API文档3.5 训练模型演示实例 MLOps 策略越来越多地应用于机器学习模型以及构建这些模型的团队中&#xff…

webpack打包发布~

1、安装webpack&#xff08;局部安装webpack&#xff09;。 npm i webpack webpack-cli -D 2、安装成功之后&#xff0c;你会在package.json文件中看到这个。 3、新建webpack.config.js文件&#xff0c;里面写配置编译模式&#xff0c;入口出口等&#xff08;这里演示的是单入…

任务管理器中的CompatTelRunner进程是做什么的?我该怎样把它关闭

一、问题描述 当我们打开电脑使用时候会发现系统反应较慢&#xff0c;使用起来没有那么流畅&#xff1b;此时我们打开任务管理器后发现是一个名为【CompatTelRunner】的进程占用大量的CPU资源导致&#xff08;点击任务管理器的CPU字样即可对使用资源进行排序&#xff09;&#…

【靶场实操】sql-labs通关详解----第二节:前端页面相关(Less-11-Less-17)

SQL注入攻击是一种针对Web应用程序的安全漏洞&#xff0c;那么自然&#xff0c;SQL注入攻击也和前端页面息息相关&#xff0c;用户输入未被正确处理、动态查询的构建、前端JavaScript代码错误&#xff0c;等等我问题都可能造成安全威胁。 在上一节&#xff0c;我们了解了基础的…

23届24届均可投!Engineering Star Program火热进行中

Hi 大家好&#xff0c;我是Chowley&#xff0c;我们组现在还有个青年工程师的HC&#xff08;23-24届均可&#xff09;&#xff0c;正在寻找QA队友&#xff0c;有兴趣用我内推码官网投递&#xff0c;简历直接发我ld 我是今年校招进入的虾皮&#xff0c;现在full-time两个月了&a…

互联网十万个为什么之什么是负载均衡?

负载均衡是一种对流量进行按需分发的服务&#xff0c;通过将流量分发到不同的后端服务器来扩展应用系统的吞吐能力&#xff0c;并且可以消除系统中的单点故障&#xff0c;提升应用系统的可用性。 为什么需要负载均衡&#xff1f; 负载均衡的出现主要是为了解决用户在网络服务…

【Godot4自学手册】第四十三用着色器(shader)给纹理描边

这一节我们学一下用着色器&#xff08;shader&#xff09;描边效果。来看看最终效果&#xff1a; 一、进行shader初始设置 首先我们进入NPC场景&#xff0c;选择Sprite2D节点&#xff0c;在检查器中中岛CanvasItem属性&#xff0c;并在Material->Material后方选择下拉按钮…

如何从智联招聘网站快速抓取职位详情?两大技巧揭秘

摘要&#xff1a; 本文将揭秘如何利用Python爬虫技术&#xff0c;高效且合法地从智联招聘网站抓取职位详情信息。通过实战示例&#xff0c;展现两大核心技巧&#xff0c;助你在大数据时代抢占先机&#xff0c;为你的市场分析、人才研究提供强大支持。 一、引言&#xff1a;数据…

LLM4Decompile反编译大模型的试用实践过程梳理

LLM4Decompile 是一款开源大型语言模型,专注于反编译工作,我们将其试用过程进行介绍: 论文地址:https://arxiv.org/abs/2403.05286 代码地址:https://github.com/albertan017/LLM4Decompile 首先,找到代码位置: 1.搭建基础环境1.python3,我用的是3.12.4 …

LinuxC++(7):认识主函数参数

主函数有哪些参数&#xff1f; main函数有三个参数&#xff0c;argc、argv和envp&#xff0c;它的标准写法如下&#xff1a; int main(int argc,char *argv[],char *envp[]){return 0; } 认识argc argc表示有几个参数&#xff0c;主函数自身也算一个&#xff0c;所以如果没…

解锁概念测量类比完成任务如何改变词语表征

欢迎来到雲闪世界。本文旨在讨论 word2vec 和 GloVe 算法的发展&#xff0c;因为这与这些算法的第二个应用目的有关&#xff1a;分析文本语料库中包含的概念。首先&#xff0c;根据 word2vec 算法的历史背景对其进行讨论。然后&#xff0c;描述类比完成任务&#xff0c;该任务突…

【C语言篇】操作符详解(上篇)

文章目录 操作符详解&#xff08;上篇&#xff09;前言sizeof强制类型转换算术操作符赋值操作符逻辑操作符逻辑取反运算符逻辑与运算符逻辑或运算符 关系操作符自增自减操作符和-逗号表达式 操作符详解&#xff08;上篇&#xff09; 前言 操作符又被叫做运算符&#xff0c;是不…

深度学习中降维的几种方法

笔者在搞网络的时候碰到个问题&#xff0c;就是将特征维度从1024降维到268&#xff0c;那么可以通过哪些深度学习方法来实现呢&#xff1f; 文章目录 1. 卷积层降维2. 全连接层降维3. 使用注意力机制4. 使用自编码器 1. 卷积层降维 可以使用1x1卷积层&#xff08;也叫pointwis…

AI新闻:近期AI领域最繁忙的一周!

本周AI领域发生了许多令人瞩目的大事&#xff0c;可以说是繁忙的一周了。下面我将为大家一一盘点这些精彩瞬间。 OpenAI的新功能和发展 高级语音功能&#xff1a;OpenAI开始推出全新的高级语音功能&#xff0c;之前展示时声音如同斯嘉丽约翰逊。这项功能已经开放给部分用户使用…

鸿蒙双向绑定组件:TextArea、TextInput、Search、Checkbox,文本输入组件,图案解锁组件PatternLock

对象暂不支持双向绑定&#xff0c; 效果&#xff1a; 代码&#xff1a; Entry Component struct MvvmCase {StateisSelect: boolean falseStatesearchText: String ""StateinputText: string ""StateareaText: string ""build() {Grid() {G…

「漏洞复现」百易云资产管理运营系统 comfileup.php 文件上传漏洞(XVE-2024-18154)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…