【LeetCode原地复写零】:双指针+逆向填充,O(n)时间O(1)空间最优解!

【LeetCode原地复写零】:双指针+逆向填充,O(n)时间O(1)空间最优解!
在这里插入图片描述
🎁个人主页:User_芊芊君子
🎉欢迎大家点赞👍评论📝收藏⭐文章
🔍系列专栏:Java.数据结构
在这里插入图片描述


在这里插入图片描述

【前言】

本文聚焦 LeetCode“原地复写零”经典题目,核心需求是在固定长度数组中复写每个 0并右移其余元素,且需满足原地修改、不使用额外数组空间的约束。正向遍历易导致后续元素被覆盖,为此本文详解双指针+逆向填充的优雅解法,高效破解这一核心难点。

文章目录:

一、复写零

在这里插入图片描述

二、思路分析

复写零这道题是让在原数组修改,如果从前向后遍历,后面的元素会被覆盖,所以我们要找到被复写的最后一个元素,然后从后往前复写。运用双指针+逆向填充

1.找到复写的最后一个数

定义两个指针:cur遍历原数组,pre模拟复写后的数组指针;cur==0时,pre向后移动两位,cur!=0时,pre向后移动两位(因为要复写0);当pre>=n-1时,停止遍历,这时,cur指的就是要复写的最后一个元素
在这里插入图片描述

边界情况:如下面这种情况,pre == n时,说明要复写的最后一个元素是0,这里单独处理

将数组最后一位改为0,也就是n==0;cur向前移动一位,pre向前移动两位;
在这里插入图片描述

2.开始从后往前复写

从cur向前遍历,cur != 0时,就让arr[pre] == arr[cur];
cur == 0时,就让pre和pre-1位置的数都改为0,然后继续向前复写。

在这里插入图片描述

三、代码展示

classSolution{publicvoidduplicateZeros(int[] arr){int cur =0, pre =-1, n = arr.length;//1.找到要复写的最后一个元素while(cur < n){if(arr[cur]==0){ pre +=2;}else{ pre++;}if(pre >= n-1){break;} cur++;}//处理边界情况if(pre == n){ arr[n-1]=0; cur--; pre -=2;}//开始从后向前复写while(cur >=0){if(arr[cur]!=0){ arr[pre--]= arr[cur--];}else{ arr[pre--]=0; arr[pre--]=0; cur--;}}}}

四、时间和空间复杂度分析

  • 时间复杂度O(n):只需要遍历数组两次,第一次定位边界,第二次逆向填充;
  • 空间复杂度O(1):使用的原数组,没有额外空间

五、总结

本解法通过双指针先定位复写边界,再逆向填充数组,既避免了正向遍历的元素覆盖问题,又实现了 O(n) 线性时间复杂度与 O(1) 常数空间复杂度的最优表现。其中“先确定边界、再逆向操作”的思路,是解决数组原地修改类问题的关键技巧,具有较强的通用性与实用性。
在这里插入图片描述

Read more

科研党沸腾!AutoFigure让AI一键画出Nature级别的论文插图,告别PPT地狱

前天发了一个PaperBanana文章: PaperBanana:AI科研人员画图终于不用头疼了 今天又刷到一篇ICLR 2026的论文,看完直接坐不住了。作为天天跟论文打交道的人,谁没为画一张像样的方法图熬过夜?现在终于有人把这事儿给彻底解决了——AutoFigure,一个能从长文本直接生成publication-ready科研插图的AI框架。 讲真,这次不是又来刷榜的那种工作。团队直接放了个大招:不仅搞出了第一个专门针对科研插图生成的benchmark FigureBench(3300对高质量文本-图片数据),还真的做出了一个能用的系统。最关键的是,人类专家评测显示,66.7%的生成结果达到了可以直接放进正式论文的标准。这可不是吹的,是实打实让10个一作来评价自己论文的图,然后给出的数据。 科研可视化这座大山,终于有人动了 咱们先聊聊为啥要做这个。科研插图有多重要?一张好图能让审稿人3分钟看懂你的核心思想,防止理解偏差。但问题是,画一张高质量的科研插图,往往要花好几天时间,还得同时具备专业知识和设计能力。 之前也有些相关工作,比如Paper2Fig100k、ACL-

By Ne0inhk
21K 行代码实现一个生产级 AI Agent 框架 — CountBot 架构设计与技术解析 | 今日正式开源

21K 行代码实现一个生产级 AI Agent 框架 — CountBot 架构设计与技术解析 | 今日正式开源

CountBot 是一个轻量级、可扩展的 AI Agent 框架,专为中文用户和国内大模型优化。今天(2026.2.21)正式开源。 GitHub:https://github.com/countbot-ai/CountBot 桌面版下载:https://github.com/countbot-ai/CountBot/releases(支持 Windows / macOS / Linux) 一、项目背景 做 AI Agent 的框架不少,但真正适合个人用户的不多。大多数框架面向企业场景,代码量动辄几十万行,配置复杂,对中文用户和国产大模型的支持也不够友好。 CountBot 的目标很明确:用最少的代码,做一个功能完整、开箱即用、中文优先的个人 AI Agent。 最终成果:约

By Ne0inhk

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理(2026 最新版·含 Auth 配置) 大家好,我是你的 AI 技术博主。今天我们来聊一个 2026 年最火的本地 AI 助理项目——OpenClaw。它能帮你清理收件箱、发邮件、管理日历、处理文件、集成 Telegram/WhatsApp,甚至执行复杂任务,而且完全跑在你自己的电脑上。 配合 Ollama 运行本地模型(如 Qwen3、Qwen2.5、GLM-4.7、Llama3.3 等),你就可以实现真正零费用、零网络依赖、全隐私保护的智能体体验。官方从 Ollama 0.17

By Ne0inhk
Claude Code vs Cursor:谁才是 2025 年最强 AI 编程助手?

Claude Code vs Cursor:谁才是 2025 年最强 AI 编程助手?

在“能否独立完成跨文件、跨终端复杂任务”这一核心挑战上,Claude Code 已领先半个身位;而在“速度、IDE 手感与成本”这些每天都要面对的细节里,Cursor 仍手握杀手锏。最强与最佳并非同义,合适的场景才是决策关键。 0 | 为什么写这篇文章? Copilot 带火了补全;Cursor/Windsurf 把 RAG 和小型 Agent 带进 IDE;直到 Claude Code 出现,我第一次看到「AI 自己敲命令、装依赖、跑测试、提交 PR」的完整闭环。它真的是当前最强吗?对比日常开发者最常用的 Cursor,我用了三周、跑了多轮基准,也翻遍公开数据,写下这篇实测报告。 1 | 两位选手概览 Claude

By Ne0inhk