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

【每天学习一点算法 2026/03/21】颜色分类

每天学习一点算法 2026/03/21

题目:颜色分类

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

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

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

常规的排序算法我这里就不多讲了,我的另一篇文章 前端算法基础 里面有写 (包括冒泡、选择、插入、快速)。

因为这个数组里面只有三种元素,所以我们可以采用一些比较,特殊的方法:简单的说就是 1 放中间 0 和 2 放两边。

/** Do not return anything, modify nums in-place instead. */functionsortColors(nums:number[]):void{if(nums.length<2)return// 只有一项不用排序letwhiteStart=0// 白色插入位置constres:number[]=[]// 存放排序后数组for(leti=0;i<nums.length;i++){if(nums[i]===0){// 0 放在前面,白色插入位置后移res.unshift(0)whiteStart++continue}if(nums[i]===1){// 1 直接在 whiteStart 处插入res.splice(whiteStart,0,1)continue}if(nums[i]===2){// 2 直接放在最后res.push(2)continue}}// 修改元素res.forEach((item,index)=>{nums[index]=item})};

但是这个不是纯粹的原地排序,我们可以在这个基础上调整一下,因为我们移动 2 的时候遍历指针需要停在原地,所以需要一个 count 来辅助遍历。

functionsortColors(nums:number[]):void{if(nums.length<2)returnletcount=nums.length// count 初始为数组长度for(leti=0;i<count;i++){if(nums[i]===0){// 0 取出来放在前面// 虽然取出了一项,但是放在前面了所以不用处理nums.splice(i,1)nums.unshift(0)continue}if(nums[i]===1){// 1 直接不处理continue}if(nums[i]===2){// 2 取出来放在后面nums.splice(i,1)nums.push(2)// 指针不动,遍历边界减 1,防止重复遍历 push 的 2i--count--continue}}};

题目来源:力扣(LeetCode)

http://www.jsqmd.com/news/513372/

相关文章:

  • KART-RERANK与知识图谱融合:提升复杂查询的语义排序精度
  • 跨平台开源网格工具-Gmsh多语言开发环境配置指南
  • SiameseUIE技术解析:StructBERT backbone在UIE任务中的适配改造
  • SX126x-SPI接口与BUSY引脚的协同控制机制
  • 嵌入式硬件技术文档编写规范与工程实践
  • Qwen3-0.6B快速集成:LangChain调用详解,新手也能轻松搞定
  • 2026级西电专硕学费上涨?这份省钱攻略帮你轻松应对(附奖学金申请指南)
  • ULC框架深度优化指南:如何让宇树G1机器人扛住2kg负重不掉速(含重心追踪调参)
  • 双轴按键摇杆模块原理与嵌入式集成实践
  • GME多模态向量模型效果惊艳展示:十类场景图像理解能力实测
  • Kali Linux在VMware上的完美安装:2023年最新配置与优化技巧
  • 隐私优先方案:OpenClaw本地化部署Qwen3-32B处理敏感数据
  • 海景美女图FLUX.1多场景落地:文旅机构AI视觉素材批量生成方案
  • 收藏!一周面完7大模型算法岗,全过经验贴|小白/程序员必看
  • Linux内核模块开发核心原理与工程实践
  • LLM 算法岗 | 八股问答(3) 强化学习与 RLHF
  • Keil5护眼配色终极指南:从Windows全局设置到编辑器细节调整
  • 3分钟掌握Unity URP描边效果:让游戏角色瞬间脱颖而出的终极方案
  • VisionPro实战指南:高效图像拼接技术解析
  • 雯雯的后宫-造相Z-Image-瑜伽女孩镜像交付物清单:含Dockerfile、启动脚本、健康检查
  • 2026年公园不锈钢雕塑厂家推荐:城市/校园/大型造型不锈钢雕塑专业供应商精选 - 品牌推荐官
  • 速看!2026年2月彩印包装直销厂家推荐,纸箱/农产品纸箱/工业纸箱/彩印包装/工业纸盒/纸盒,彩印包装供应商口碑分析 - 品牌推荐师
  • 告别数据焦虑!用GEE和CHIRPS数据,5分钟搞定全球降雨时空分析(附完整代码)
  • Cogito 3B实战:一键部署本地AI编程助手,写代码更轻松
  • 如何用SLiM软件模拟Wright-Fisher模型?从零开始的群体遗传学实验指南
  • Nanbeige 4.1-3B部署教程:Docker镜像封装与像素UI资源打包最佳实践
  • 记录复现多模态大模型论文OPERA的一周工作
  • 新手必看:Qwen2.5-VL视觉定位模型使用技巧,提升‘看图找物’准确率的秘诀
  • 3D打印机调校核心:一步步教你校准Marlin固件的步进电机参数(X/Y/Z/E轴)
  • 算法性能预测的统计模型与参数敏感性分析的技术7