LeetCode 80 删除有序数组中的重复项 II
📅 2026/7/29 1:55:09
👁️ 次浏览
1. 题目80. 删除有序数组中的重复项 II - 力扣LeetCode题目描述给你一个有序数组nums请你原地删除重复出现的元素使每个元素最多出现两次返回删除后数组的新长度。不要使用额外的数组空间必须在 (O(1)) 额外空间并原地修改输入数组。元素的相对顺序应该保持一致。无需考虑数组超出新长度后的部分。示例输入nums [1,1,1,2,2,3]输出5nums [1,1,2,2,3,] 输入nums [0,0,1,1,1,1,2,3,3] 输出7nums [0,0,1,1,2,3,3,,_]约束(1 nums.length 3*10^4)(-10^4 nums[i] 10^4)nums已按升序排列2. 最佳解题思路描述快慢指针通用模板本题最优核心规则有序数组允许同一个数字最多保留 2 个快慢指针定义r慢指针下一个可填充的有效位置初始为 2前两个数字天然合法直接保留l快指针遍历全部数组从下标 2 开始向后扫描判断逻辑对比当前快指针值nums[l]和有效区间倒数第二个值nums[r-2]不相等说明当前数字出现次数≤2是合法元素覆盖到nums[r]慢指针右移相等说明当前数字已经存在两个直接跳过遍历结束后r即为有效数组长度直接返回。优势时间复杂度 (O(n))仅单次遍历空间复杂度 (O(1))原地赋值无 erase、无额外容器可拓展通用最多保留 k 个重复项只需把初始 r、对比下标改成 k。3. 我的可优化代码逻辑完全正确是标准最优解仅微小细节优化class Solution { public: int removeDuplicates(vectorint nums) { int nnums.size(); if(n2){ return n; } int r 2; for(int l r;ln;l){ if(nums[l]!nums[r-2]){ nums[r]nums[l]; } } return r; } };代码说明正确性逻辑无任何 bug能通过全部测试用例是行业标准最优写法可优化小细节边界判断if(n2)可以省略数组长度 0/1 时for 循环不会执行直接 return r2 会出错因此该判断必须保留变量名语义优化r改名为slow、l改名为fast和 26、27 题命名统一方便记忆循环简写nums[slow] nums[fast]压缩一行。4. 标准规范版代码统一快慢指针命名class Solution { public: int removeDuplicates(vectorint nums) { int n nums.size(); if (n 2) return n; int slow 2; for (int fast 2; fast n; fast) { if (nums[fast] ! nums[slow - 2]) { nums[slow] nums[fast]; } } return slow; } };5. 总结你的代码思路、实现完全正确是本题最优解法面试可直接书写核心判断记忆点最多保留 2 个就和slow-2对比初始慢指针从 2 开始前两个数字一定合法无需校验有序数组限制是该解法成立的前提无序数组不能使用此模板无 erase、无嵌套循环性能远优于暴力删除方案。6. 相关知识拓展拓展 1通用模板 —— 最多保留 k 个重复元素将本题逻辑泛化任意 k 都适用int removeDuplicates(vectorint nums, int k) { int n nums.size(); if (n k) return n; int slow k; for (int fast k; fast n; fast) { if (nums[fast] ! nums[slow - k]) { nums[slow] nums[fast]; } } return slow; }LC26最多保留 1 个k1slow 初始 1对比 slow-1LC80最多保留 2 个k2slow 初始 2对比 slow-2。拓展 2暴力 erase 对比不推荐循环 erase 删除第三个及以后重复数字时间复杂度 (O(n^2))大数据超时int removeDuplicates(vectorint nums) { for(int i2;inums.size();i){ if(nums[i]nums[i-2]){ nums.erase(nums.begin()i); i--; } } return nums.size(); }拓展 3同类快慢指针题目汇总LC27 移除指定元素LC26 有序数组去重最多 1 个LC80 有序数组去重最多 2 个LC283 移动零全部遵循fast 遍历筛选slow 维护有效数组。拓展 4复杂度对比快慢指针最优解(O(n)) 时间(O(1)) 空间erase 暴力删除(O(n^2)) 时间(O(1)) 空间。
PCB 封装 3D 图、STEP 文件完整操作指南(以最常用 Altium Designer 为主,附带常见问题) STEP(.step/.stp)是 ECAD 电子与 MCAD 机械软件通用 3D 中性文件,用来检查 PCB 与外壳、结构件干涉。 整体分为两大块: 1)给元件封装添加 3D 模型(导入 STEP); 2)整板 PCB 导出…
📅 2026/7/29 1:55:09
在外汇相关服务里,MHmarkets是否值得长期关注,往往取决于几个清晰的体验点:说明是否好理解、提示是否到位、流程是否连贯、支持是否稳定。下面从这些维度对MHmarkets做一次正向梳理与要点归纳。外汇相关平台的价值,体现在长期一致…
📅 2026/7/29 1:55:09
说实话,每次打开那些默认的在线分析工具,看到满屏的粉红、翠绿或者亮蓝色的散点图,我心里就一阵烦躁。这种配色不仅刺眼,而且在黑白打印或者投影的时候,根本看不清重点。做生信分析,图不仅仅是给机器看的,更是给审稿人和同行看的。如果第一眼的视觉体验就拉胯,后面的统…
📅 2026/7/29 1:53:21
短文标题:影子寄存器:改ARR下个周期才生效,防波形“断片”你有没有想过一个问题:PWM正在输出,你突然改了ARR(周期),波形会不会断一下或出现毛刺?取决于ARPE位。 如果没开…
📅 2026/7/29 3:07:54
这次我们来看吴恩达的《提示词工程》系列课程,这套2026年的最新版本被很多学习者称为"比刷剧还爽"的AI入门内容。作为AI领域的权威教育者,吴恩达这次把重点放在了实际可操作的提示词编写技巧上,而不是空洞的理论概念。课程最核心的…
📅 2026/7/29 3:07:54
操作流程:1.下载千问 App2.输入口令「 千问新人福利 yPBm3m 」就能领取啦!平时点饮品、外卖、出门打车都能抵扣。 最近天太热总想买冰奶茶,刚好能用上,能省一点是一点,感兴趣可以试试,主包已经喝麻了。…
📅 2026/7/29 3:07:54
1. 从零到一:为什么我们要亲手做一个数字钟? 如果你对电子硬件感兴趣,或者正在学习数字电路、嵌入式系统,那么“做一个数字钟”这个项目,几乎是一个绕不开的经典里程碑。它不像点亮一个LED那样简单,也不像设…
📅 2026/7/29 3:07:54
1. 从“滴滴”声到万物互联:串口通信的基石地位如果你玩过单片机,或者拆开过家里的旧电脑、路由器,大概率会看到一块电路板上,除了密密麻麻的芯片和电容电阻,还有一排小小的金属针脚,旁边可能印着“TX”、“…
📅 2026/7/29 3:07:53
拿到GEO数据库下载下来的表达矩阵,是不是看着密密麻麻的数字头都大了?很多人第一反应就是去跑复杂的R语言代码。其实对于只想快速找差异基因的朋友来说,NCBI自带的geo2r工具才是真香。它不用你配置环境,不用装包,浏览器打开就能用。但问题是,很多人点完Run,看着一堆P值,…
📅 2026/7/29 3:06:42
解密Seq的核心功能:如何利用Pipeline实现高效基因组数据处理 【免费下载链接】seq A high-performance, Pythonic language for bioinformatics 项目地址: https://gitcode.com/gh_mirrors/se/seq
Seq作为一款高性能的生物信息学专用语言,其Pipel…
📅 2026/7/29 0:00:00
Flask-Blogging插件开发指南:打造属于你的个性化博客功能 【免费下载链接】Flask-Blogging A Markdown Based Python Blog Engine as a Flask Extension. 项目地址: https://gitcode.com/gh_mirrors/fl/Flask-Blogging
Flask-Blogging是一个基于Markdown的Py…
📅 2026/7/29 0:00:00
近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…
📅 2026/7/29 0:01:00
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/29 1:14:44
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/29 1:14:44
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/29 1:14:46
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/28 7:13:45
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/28 17:14:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/28 5:13:40