Leetcode hot100 颜色分类【中等】
看懂题目后直觉是 —— new一个一样大小的数组遍历一遍原数组数出来0、1、2的个数然后按照个数直接写入新数组。但题目要求在原地弄也就是不能通过我们这样拷贝的方式。并且进阶要求只遍历一遍。空间限制我们时间也限制我们那还怎么弄因为要么牺牲空间换时间要么牺牲时间换空间。他的要求不合理呀再仔细一看其实进阶要求的并不是时间复杂度在O(n)而是只遍历一遍。直觉就告诉我们遍历这一遍的时候必须狠狠折腾。法一三指针 可以不用看灵感来自于快排。从左到右遍历数组nums如果是0都放到左边如果是2都放到右边。维护两个指针一个left指向下一个放0的位置一个right指向下一个放2的位置。再用一个指针去遍历。遍历到第i个时有三种情况嘛分三种情况讨论。1. 当nums[i]0时放到左边去具体操作是把指针i和指针left指向的元素交换一下。① 重置left指针通过while循环重置left指针到下一个放0的位置。② 重置i指针因为新换到了i位置上一个数字所以下次还是遍历i位置所以i指针不变2. 当nums[i]1时继续遍历下一个。3. 当nums[i]2时放到右边去具体操作是把指针i和指针right指向的元素交换一下。① 重置right指针通过while循环重置right指针到下一个放2的位置。② 重置i指针因为新换到了i位置上一个数字所以下次还是遍历i位置所以i指针不变然后捏是通过用例测出来的一个特殊情况。会出现这样一种情况ileft且nums[i]nums[left]0这种情况就不要去交换了直接i和left都加一。PS 因为我们的left指针和i指针都是从左往右的嘛所以才会在交换0的时候遇到这种情况交换2的时候不存在这种情况。class Solution { public void sortColors(int[] nums) { //定义left指向下一个放0的位置 //定义right:指向下一个放2的位置 //定义i: 当前遍历的位置 int left0; int rightnums.length-1; while(leftnums.length nums[left]0) left; //初始化 while(right0 nums[right]2) right--; //初始化 int ileft; //初始化 while(iright){ if(nums[i]0){ if(ileft){left;i;} //出错案例测出来的情况 else{swap(nums,left,i); while(nums[left]0) left;} //因为新换到了i位置上一个数字所以下次还是遍历i位置所以i指针不变 } else if(nums[i]1){i;}//什么也不干直接遍历下一个 else if(nums[i]2){swap(nums,i,right);while(nums[right]2) right--;} } } public void swap(int[] nums,int a,int b){ int temp nums[a]; nums[a] nums[b]; nums[b] temp; } }法二三指针 这个写起来更好实现还有个更简单的思路同样也是三指针这次维护的是下一个放0的位置下一个放1的位置。同样也分三种情况1.nums[i]0时把这个0往前插zero和i之间的整体后移一位2.nums[i]1时把这个1往前插one和i之前的整体后移一位3. nums[i]2时继续遍历下一个class Solution { public void sortColors(int[] nums) { //定义zero下一个放0的位置 //定义one下一个放1的位置 //定义i当前遍历的位置 int zero0; while(zero nums.length nums[zero]0) zero; //初始化 int onezero; while(one nums.length nums[one]1) one; //初始化 int ione; //初始化 while (inums.length){ if(nums[i]0){ //[zero,i-1]闭区间内的元素整体后移一位 for(int ji;jzero;j--){nums[j]nums[j-1];} //插入0 nums[zero]0; //重置指针 zero; i; one; //坑在这里别忘了1的指针也跟着往右移了一位 } else if(nums[i]1){ //[one,i-1]闭区间内的元素整体后移一位 for(int ji;jone;j--){nums[j]nums[j-1];} //插入0 nums[one]1; //重置指针 one; i; } else if(nums[i]2) i; } } }

相关新闻

图像预处理实战指南:从几何变换到工程落地的全流程避坑

图像预处理实战指南:从几何变换到工程落地的全流程避坑

图像预处理这个环节,说它是整个视觉任务里最不起眼、却最容易决定成败的一步,一点都不夸张。我做过不少图像相关的项目,从分类、检测到分割,也帮人排查过不少"模型明明没问题但效果就是上不去"的案例,最后追…

2026/10/13 6:23:46 阅读更多 →
多智能体协作系统实战:架构设计与落地经验

多智能体协作系统实战:架构设计与落地经验

1. 从单兵作战到团队协同:为什么我们需要重新思考开发模式做过几年开发的人都有一个共同感受:项目越做越大,代码越写越多,但真正让人头疼的往往不是某个技术难点,而是协作本身。需求在变、接口在变、文档永远滞后于代码…

2026/10/13 6:22:46 阅读更多 →
auto-deep-researcher-24x7核心代码拆解:THINK→EXECUTE→REFLECT自主循环如何7×24不间断运转

auto-deep-researcher-24x7核心代码拆解:THINK→EXECUTE→REFLECT自主循环如何7×24不间断运转

人工智能AI Agent大模型深度研究自主智能体深度学习 【免费下载链接】auto-deep-researcher-24x7 🔥 An autonomous AI agent that runs your deep learning experiments 24/7 while you sleep. Zero-cost monitoring, Leader-Worker architecture, constant-size m…

2026/10/13 6:22:46 阅读更多 →

最新新闻

OAM相位图生成与拓扑荷数提取实战指南

OAM相位图生成与拓扑荷数提取实战指南

简介:本资源是一套面向电磁波物理、光通信与OAM前沿研究方向的可视化分析资料包,适用于高校研究生、光学工程研究人员及通信领域工程师,用于深入理解涡旋电磁波的相位结构与场强分布特性。压缩包共19个文件,含8个.dat数据文件&…

2026/10/13 7:10:57 阅读更多 →
多租户LLM应用Prompt隔离实战:防串味、防泄露的完整指南

多租户LLM应用Prompt隔离实战:防串味、防泄露的完整指南

做过多租户LLM应用的人,大概率遇到过一种极其折磨人的故障:系统日志一切正常、模型接口也没有报错,但某个租户突然反馈“AI好像变成了别人家的客服”——回答里出现了另一家公司的名称,甚至把别家的产品报价当成自己的给出去。这种…

2026/10/13 7:10:57 阅读更多 →
Spring Boot接口版本控制实战:自定义注解实现v1/v2共存

Spring Boot接口版本控制实战:自定义注解实现v1/v2共存

做接口开发的朋友,应该都经历过这种尴尬:接口上线跑得好好的,某天产品说“加个字段”,你顺手把老接口改了,结果第二天第三方对接方打来电话——“你接口怎么挂了?”要命的是,对方根本不关心你改…

2026/10/13 7:10:57 阅读更多 →
ngx-bootstrap Tabs 键盘导航禁用:`TabsetConfig.isKeysAllowed` 配置与源码原理深度解析

ngx-bootstrap Tabs 键盘导航禁用:`TabsetConfig.isKeysAllowed` 配置与源码原理深度解析

UI组件前端 【免费下载链接】ngx-bootstrap Fast and reliable Bootstrap widgets in Angular (supports Ivy engine) 项目地址: https://gitcode.com/gh_mirrors/ng/ngx-bootstrap 点击查看 免费下载 本篇技术指南围绕 ngx-bootstrap Tabs 组件中的“禁用键盘导航…

2026/10/13 7:10:57 阅读更多 →
CodeBuddy实测:把AI编程助手用出工程级效率的关键技巧

CodeBuddy实测:把AI编程助手用出工程级效率的关键技巧

不管你是刚听说 AI 编程助手、准备换工具的老手,还是已经在用但觉得“没想象中好用”的开发者,这篇都值得看完。我花了大概一个月时间,把自己日常的编码、Debug、重构流程全部过了一遍 CodeBuddy,从 IDE 插件安装到拿它去改一个老…

2026/10/13 7:10:57 阅读更多 →
pandas-ta 实战:量化技术指标计算与回测流水线集成

pandas-ta 实战:量化技术指标计算与回测流水线集成

简介:Pandas TA 是一个面向 Python 3 的 Pandas 扩展库,专为量化交易、金融数据分析与股票市场研究场景设计,适合具备一定 Pandas 基础、希望快速调用技术指标的开发者与交易策略研究者。它内置 120 多个技术分析指标与实用函数,涵…

2026/10/13 7:09:57 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →