news 2026/5/3 1:11:09

0075. 颜色分类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
0075. 颜色分类

题目链接

75. 颜色分类 - 力扣(LeetCode)

题目描述

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

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

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

题目示例

示例 1 :

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

示例 2 :

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

解题思路

  1. 问题理解
    • 给定一个包含012的数组nums,要求原地排序,使得所有0在前,1在中,2在后。
    • 必须使用一趟扫描算法,且空间复杂度为O(1)。
  2. 关键思路
    • 双指针法:使用两个指针p0p1分别跟踪01的插入位置。
    • 覆盖写入:遍历数组时,默认将当前元素置为2,然后根据原始值调整01的位置。
  3. 算法流程
    • 初始化p0p10,表示01的插入起始位置。
    • 遍历数组:
      • 将当前元素nums[i]暂存为x,并将nums[i]置为2
      • 如果x01,将1写入p1位置,并右移p1
      • 如果x0,将0写入p0位置,并右移p0
    • 最终012会按顺序排列。

题解代码

classSolution{publicvoidsortColors(int[]nums){intp0=0;// 指向0的插入位置intp1=0;// 指向1的插入位置for(inti=0;i<nums.length;i++){intx=nums[i];// 当前元素值nums[i]=2;// 默认将当前元素置为2if(x<=1){nums[p1]=1;// 如果x是0或1,将1放入p1位置p1++;// p1指针右移}if(x==0){nums[p0]=0;// 如果x是0,将0放入p0位置p0++;// p0指针右移}}}}

复杂度分析

  1. 时间复杂度
    • 仅遍历数组一次:O(n)。
  2. 空间复杂度
    • 仅使用常数空间(p0p1x变量):O(1)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 1:03:24

树莓派HiFiBerry OS:打造高保真数字音频转盘的完整指南

1. 项目概述&#xff1a;为树莓派量身打造的高保真音频操作系统如果你手头有一块树莓派&#xff0c;又恰好对音质有那么点追求&#xff0c;那么“HiFiBerry OS”这个名字你大概率不会陌生。这可不是一个简单的音乐播放软件&#xff0c;而是一个完整的、为音频回放深度优化的操作…

作者头像 李华
网站建设 2026/5/3 1:00:19

REFramework终极指南:5分钟打造RE引擎游戏Mod开发环境

REFramework终极指南&#xff1a;5分钟打造RE引擎游戏Mod开发环境 【免费下载链接】REFramework Mod loader, scripting platform, and VR support for all RE Engine games 项目地址: https://gitcode.com/GitHub_Trending/re/REFramework REFramework是一款专为RE引擎…

作者头像 李华
网站建设 2026/5/3 0:58:47

CANoe DLL编程避坑指南:手把手教你用Visual Studio 2019创建SendKey.dll

CANoe DLL开发实战&#xff1a;从零构建安全算法模块的完整指南 1. 开发环境配置与项目创建 在Visual Studio 2019中创建符合CANoe调用规范的DLL项目&#xff0c;需要特别注意平台工具集和运行时库的选择。对于64位CANoe 11环境&#xff0c;推荐使用以下配置&#xff1a; 关…

作者头像 李华
网站建设 2026/5/3 0:58:44

手把手教你用STM32F103驱动麦克纳姆轮小车:从TB6612接线到PID调参全流程

STM32F103麦克纳姆轮小车实战指南&#xff1a;从硬件搭建到PID调优 第一次接触麦克纳姆轮时&#xff0c;我被它那违反直觉的运动方式震撼了——四个轮子各自朝不同方向旋转&#xff0c;却能实现车体的精准平移。这种独特的运动特性让麦克纳姆轮在狭窄空间作业、全向移动机器人等…

作者头像 李华
网站建设 2026/5/3 0:54:08

百度网盘下载限制突破指南:5分钟学会获取真实下载地址

百度网盘下载限制突破指南&#xff1a;5分钟学会获取真实下载地址 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经面对百度网盘蜗牛般的下载速度感到绝望&#xff1…

作者头像 李华
网站建设 2026/5/3 0:54:08

西门子S7-1200PLC-Modbus 串行通信应用

西门子S7-1200 PLC支持两种主流的Modbus通信&#xff1a;基于RS485串口的Modbus RTU和基于以太网的Modbus TCP。前者适合现场短距离、抗干扰要求高的设备连接&#xff0c;后者便于集成到工厂以太网络实现远程监控。以下分别介绍两种方式的核心配置步骤&#xff0c;你可以根据实…

作者头像 李华