力扣HOT100之技巧:75. 颜色分类


这道题实际上就是让我们不用sort()函数来实现对原数组的排序,这里我直接使用快速排序对原数组进行排序了,也是复习一下基于快慢指针的快速排序写法。面试手撕快排的思路参考这个视频。
用时击败100%,还行。下面直接贴代码。

class Solution {
public:void sortColors(vector<int>& nums) {quicksort(nums, 0, nums.size() - 1);}void quicksort(vector<int>& nums, int begin, int end){if(begin >= end) return ;   //只有一个元素,无需排序,直接返回//排序主逻辑int pivot = nums[end];int slow = begin, fast = begin; while(fast < end){if(nums[fast] > pivot)fast++;else{swap(nums[slow], nums[fast]);slow++;fast++;}}swap(nums[slow], nums[end]);  //将枢轴移动到正确位置quicksort(nums, begin, slow - 1);   //对枢轴左侧排序quicksort(nums, slow + 1, end);   //对枢轴右侧排序}
};

但是,使用快速排序无法通过一次扫描就将整个数组排序完成,还可以使用更高效的方法。我感觉灵神的题解也写得挺通俗易懂的,感觉灵神的题解写的特别好,还是建议去看他的题解
以下是根据灵神的题解写出来的代码。

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

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

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

相关文章

离线部署openstack 2024.1 keystone

控制节点身份服务 离线下载 apt-get install --download-only keystone python3-openstackclient apache2 libapache2-mod-wsgi-py3mkdir /controller/keystone mv /var/cache/apt/archives/*.deb /controller/keystone/ dpkg -i /controller/keystone/*.deb在一个控制节点操…

帆软 BI 从入门到实战全攻略(一):安装激活与添加数据

一、帆软 BI 产品概述​ 在当今大数据时代&#xff0c;数据分析与可视化成为企业洞察业务、驱动决策的关键利器。帆软软件有限公司作为中国专业的大数据 BI 和分析平台提供商&#xff0c;自 2006 年成立以来&#xff0c;凭借其在商业智能和数据分析领域的深耕细作&#xff0c;…

网络协议通俗易懂详解指南

目录 1. 什么是网络协议? 1.1 协议的本质 1.2 为什么需要协议? 1.3 协议分层的概念 2. TCP协议详解 - 可靠的信使 📦 2.1 TCP是什么? 2.2 TCP的核心特性 🔗 面向连接 🛡️ 可靠传输 📊 流量控制 2.3 TCP三次握手 - 建立连接 2.4 TCP四次挥手 - 断开连接…

量子加速器切入 AI 底层架构!能源焦虑时代,ORCA 正在改写数据中心的计算逻辑

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨浪味仙 行业动向&#xff1a;2000字丨5分钟阅读 人工智能的飞速发展&#xff0c;令计算需求呈现爆炸式增长&#xff0c;也催生出专为 AI 设计的新型计算基础设施形态——AI…

< 买了个麻烦 (二) 618 京东云--轻量服务器 > “可以为您申请全额退订呢。“ 工单记录:可以“全额退款“

事情进展是这样的&#xff1a; 海外接听 一分钟 1-2 元&#xff0c;具体多少要问联通。 这几天接电话&#xff0c;有点儿心烦&#xff0c;看见来自 010-86310548 以为是 ICP 备案&#xff0c;结果接起来全是 VPS &#xff08;轻量应用服务器&#xff09;这个工单&#xff0c;就…

接口限频算法:漏桶算法、令牌桶算法、滑动窗口算法

文章目录 限频三大算法对比与选型建议一、漏桶算法&#xff08;Leaky Bucket Algorithm&#xff09;1.核心原理2.实现3.为什么要限制漏桶容量4.优缺点分析 二、令牌桶算法&#xff08;Token Bucket Algorithm&#xff09;1.核心原理2.实现&#xff08;1&#xff09;单机实现&am…

HTML5 盒子模型

1. 盒子模型的概念 2. 边框&#xff08;border&#xff09; 边框颜色&#xff08;border-color&#xff09; 边框粗细&#xff08;border-width&#xff09; 边框样式&#xff08;border-style&#xff09; border简写&#xff08;border&#xff1a;&#xff09; 3. 外边距&am…

【Linux】Linux高级I/O

参考博客&#xff1a;https://blog.csdn.net/sjsjnsjnn/article/details/128345976 一、五种IO模型 阻塞式I/O非阻塞式I/OI/O复用&#xff08;多路转接&#xff09;信号驱动式I/O异步I/O I/O我们并不陌生&#xff0c;简单的说就是输入输出&#xff1b;对于一个输入操作通常包…

关于界面存在AB测试后UI刷新空白的问题

问题描述&#xff1a; 在同一页面存在AB面&#xff0c;A和B同时都有一个rv&#xff0c;然后A面的rv填充不了数据&#xff0c;B面的可以。 问题解决&#xff1a; header_task布局里的include_new_gift_sign里有一个和外层一样id的recyclerview include的标签的作用是。在infl…

Go 协程(Goroutine)入门与基础使用

一、什么是协程&#xff08;Goroutine&#xff09;&#xff1f; 简单来说&#xff0c;协程是由 Go 语言运行时管理的轻量级线程。相比系统线程&#xff0c;它的调度开销极小&#xff0c;内存占用非常少&#xff08;默认只需 2KB 栈空间&#xff09;。 你可以在一个程序中轻松…

matlab 各种智能优化算法

1. 优化算法相关 蚁群优化算法&#xff08;ACO&#xff09; 蚁群优化算法是一种模拟蚂蚁觅食行为的优化技术。以下是一个简化版的ACO用于解决旅行商问题&#xff08;TSP&#xff09;的MATLAB代码&#xff1a; function [bestRoute, minDist] acoTsp(distMatrix, numAnts, n…

Hilt -> Android 专属依赖注入(DI)框架

Hilt 是 Google 基于 Dagger 封装的 Android 专属依赖注入&#xff08;DI&#xff09;框架&#xff0c;显著简化了依赖管理流程&#xff0c;提升代码可维护性和可测试性。以下是核心要点及使用指南&#xff1a; dagger2: Dagger 2 原理和使用-CSDN博客 Hilt vs Dagger2&…

AISHELL-5 全球首套智能驾舱中文语音交互数据集开源

随着汽车成为人们日常生活中不可或缺的一部分&#xff0c;而驾驶舱中传统的触摸交互方式容易分散驾驶员的注意力&#xff0c;存在安全风险&#xff0c;因此&#xff0c;车内基于语音的交互方式得到重视。与通常家庭或会议场景中的语音识别系统不同&#xff0c;驾驶场景中的系统…

openstack之neutron(一)

NFV基础 neutron是对二层物理网络的抽象与管理&#xff0c;实例的网络功能由连接到vSwitch的端口上的vNIC共同实现&#xff0c;再通过物理服务器的物理网卡访问外部的物理网络。 NFV实现 网卡虚拟化&#xff1a;tap、tun、veth&#xff1b; 交换机虚拟化&#xff1a;linuxbri…

【Java】Arrays.sort:TimSort

一&#xff0c;概述 书接前文【Java】Arrays.sort:DualPivotQuicksort-CSDN博客 Arrays.sort对基本数据类型使用了双轴快速排序&#xff0c;但是对Object[]类型&#xff0c;则使用了TimSort&#xff0c;TimSort是稳定的排序&#xff0c;它整合了插入排序归并排序&#xff0c;…

一个n8n构建的能和LLM对话的Agent

一个n8n构建的能和LLM对话的Agent 1.OLLAMA1.1.下载和安装1.2.设置环境变量1.3.重启ollama1.4.测试1.5.拉取模型2.n8n部署2.1. 镜像拉取和启动2.2.注册和登录2.3.新建一个工作流3.说在后面的话环境搭建说明: windows(RTX 5090)+VM CENTOS 采用本地化的ollama运行LLM n8n是一…

升级 Ubuntu Linux 内核的几种不同方法

方法 &#xff11; &#xff0d; 使用 dpkg 升级 Linux 内核&#xff08;手动方式&#xff09; 这个方法可以帮助你从 kernel.ubuntu.com 网站手动下载可用的最新 Linux 内核。如果你打算安装最新版&#xff08;而不是稳定版或者正式发布版&#xff09;&#xff0c;那这种方法…

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…

Linux 内核 Slab 分配器核心组件详解

Slab 分配器是 Linux 内核中用于高效管理内存的机制&#xff0c;其核心目标是通过对象缓存减少内存碎片和分配/释放开销。以下详细解析其核心组件及其协作关系&#xff1a; 一、Slab 系统的核心组件 组件 描述 作用场景 Slab 描述符 每个 Slab 的管理结构&#xff08;如 struc…

Oracle 的AHF (Automatic Health Framework) 工具

Oracle 的AHF (Automatic Health Framework) 工具 Oracle AHF (Automatic Health Framework) 是 Oracle 官方提供的诊断工具集合&#xff0c;用于自动收集、分析和诊断 Oracle 数据库及集群环境的健康状态和问题。 一 AHF 核心功能概述 1. 主要组件 TFA (Trace File Analyz…