力扣算法练练练1——双指针 📅 发布时间:2026/7/5 13:23:52 👁️ 浏览次数: 目录总结这种题目的通用“模板”二、 核心思路快慢指针法二、 这个思路是如何推导出来的思维演变过程阶段 1暴力直觉不符合要求的想法阶段 2“空间换时间”的假想寻找灵感阶段 3“空间融合”与指针的诞生破局点阶段 4为什么是“交换”而不是直接覆盖class Solution { public void duplicateZeros(int[] arr) { int i 0; int top 1; for(;toparr.length;i){ if(arr[i] ! 0){ top; }else{ top 2; } } for(int j arr.length-1;i! 0;i--){ if(arr[i] 0top arr.length1){ arr[j] 0; j--; }else if(arr[i] 0){ arr[j] arr[j-1] 0; j -2; }else{ arr[j] arr[i]; j--; } } } }总结这种题目的通用“模板”当你看到题目要求原地In-place修改。涉及到元素的增加、复写或大规模平移。数组长度固定或要求删除元素。你的大脑应该立刻跳出这个条件反射 “我能不能先算一下结果数组长什么样然后从后往前填数据”这种“后序填空法”能完美避开数据覆盖的陷阱是处理数组平移类问题的万能钥匙。二、 核心思路快慢指针法基于上面的推导我们得到了时间复杂度极佳且空间复杂度为 $O(1)$ 的最优解法。定义指针* 设定一个慢指针slow每次走一步即进行一次各位平方和计算。设定一个快指针fast每次走两步即连续进行两次各位平方和计算。开始追击让slow和fast同时从起点 $n$ 出发不断循环推进。判断终局如果这条路径没有环fast会先到达 1。只要fast或fast的下一步是 1就是快乐数。如果这条路径有环由于fast比slow跑得快它们总有一天会在环内的某个数字上相遇即slow fast。一旦相遇我们就看相遇时的数字是不是 1。如果是 1说明在 1 这个终点处循环1 的平方和还是 1是快乐数如果不是 1说明在其他数字组成的死胡同里死循环了不是快乐数。二、 这个思路是如何推导出来的思维演变过程在没有任何提示的情况下面对“原地修改”和“保持相对顺序”这两个苛刻条件我们可以经历以下三个思考阶段阶段 1暴力直觉不符合要求的想法最容易想到的办法是每次遇到 0就把后面的所有元素往前挪一步把 0 挤到最后。推翻数组元素的插入和删除或者说整体平移时间复杂度是 $O(N)$。如果数组里有很多 0整体复杂度会飙升到 $O(N^2)$效率太低。阶段 2“空间换时间”的假想寻找灵感如果题目没有“原地操作”的限制允许我们新开一个数组我们会怎么做非常简单准备一个空数组遍历原数组看到非 0 的数字就按顺序塞进新数组里。遍历完后新数组剩下的空位全部填 0 即可。这个逻辑极其高效时间复杂度只需 $O(N)$。阶段 3“空间融合”与指针的诞生破局点核心顿悟能不能在原数组的“前半部分”模拟那个“新数组”既然 0 最终都要去后面而我们只关心非零元素的相对顺序那我们完全可以把原数组的头部当成那个“新数组”来用。这就是两个指针诞生的时刻我们需要一个指针cur去原数组里“进货”找非零元素。我们需要另一个指针dest在原数组的头部负责“摆货”记录非零元素该放的位置。阶段 4为什么是“交换”而不是直接覆盖如果我们直接把nums[cur]的值赋给nums[dest]会导致原有的 0 被覆盖掉后续我们就不知道该在哪里补 0 了。但是如果是交换Swapcur找回来的非零元素放到了dest的位置而dest原本指向的0则被扔到了cur扫描过后的废弃区域。这样不仅完成了非零元素的搬运还顺手把 0 像滚雪球一样推到了数组的尾部
42 岁程序员:房贷,车贷压力好大,好想找一份工作,刷招聘软件15550 次沟通零 offer,网友:年纪大了~ 点击上方“码农突围”,马上关注 这里是码农充电第一站,回复“666”,获取一份专属大礼包 真爱,请设置“星标”或点个“在看”这是【码农突围】的第 493 篇原创分享作者 l 突围的鱼来源 l 码农突围(ID:smarty… 2026/7/5 13:23:46
单片机时钟问题 手里有一块STM32F407的开发板,放置好久了,今天上电看看还能不能工作。 发现还是好的。 跑马灯工程,时钟配置是168MHz,想知道是不是真的跑在这个频率上,因为之前玩雅特力AT32F425时发现可以将时钟配置到132MHzÿ… 2026/4/1 3:49:26
无需编程!Qwen3-ASR语音识别服务5分钟快速部署指南 无需编程!Qwen3-ASR语音识别服务5分钟快速部署指南 1. 开篇:语音识别零门槛体验 想象一下,你刚结束一场跨国会议,需要将录音快速转为文字;或者你收集了大量方言访谈,急需整理成文档。传统方法要么费时费力… 2026/4/1 3:48:55
TensorRT量化部署实战:从QAT训练到INT8推理优化 1. 项目概述:当量化遇上推理加速在边缘计算设备上部署深度学习模型时,我们常常面临一个两难选择:既要保证模型精度,又要满足实时性要求。TensorRT作为NVIDIA推出的高性能推理引擎,其量化支持能力已经成为工业级部署的事… 2026/7/5 13:20:08
如何用m4s-converter将B站缓存视频永久保存为MP4格式? 如何用m4s-converter将B站缓存视频永久保存为MP4格式? 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾遇到过B站收藏的视频突… 2026/7/5 13:18:07
KMR221与TM4C129ENCPDT在精密电压监控系统中的应用 1. 项目背景与核心器件选型在工业自动化和精密仪器领域,电压管理系统的精度直接决定了设备的可靠性和测量准确性。最近我在设计一套用于医疗设备的电源监控系统时,选择了KMR221电压监控器与TM4C129ENCPDT微控制器的组合方案。这个搭配在3个月的实测中表现… 2026/7/5 13:16:07
影刀RPA深度教程:飞书生态联动实战 影刀RPA深度教程:飞书生态联动实战 飞书是和影刀联动最深的平台。消息通知、多维表格、审批、日程,全流程都能自动化。 这篇文章把飞书联动讲透,附带3个完整实战案例。 先装好环境 www.yingdao.com 下载,社区版免费。 飞书授权… 2026/7/5 13:16:07
Havenlon 不是审批系统,也不是风控系统 AI 时代,执行正在脱离决策,而没有人守住"是否真的发生"这一层。摘要面对一个高风险动作,人们通常问两个问题:该不该做(审批),危不危险(风控)。这两个问题都很重… 2026/7/5 13:12:06
ICM-42688-P与PIC18F25K80在运动控制与振动监测中的应用 1. ICM-42688-P与PIC18F25K80的黄金组合解析在运动控制和振动监测领域,传感器与微控制器的选型往往决定了整个系统的性能上限。ICM-42688-P作为TDK InvenSense推出的6轴MEMS运动传感器,搭配Microchip的PIC18F25K80这款经典8位MCU,形成了一个极… 2026/7/5 13:12:06
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36