news 2026/4/24 18:14:20

算法打卡第11天 删除有序数组中的重复项

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法打卡第11天 删除有序数组中的重复项

一、今日任务

第11天 删除有序数组中的重复项 II
今日任务:80. 删除有序数组中的重复项 II 巩固滑动窗口算法,提交第二周学习小结
题意:
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/
视频链接:https://www.bilibili.com/video/BV18G5UzzE8c/

二、初次解题与思考

昨天刚做了“26.删除有序数组中的重复项”(每个元素只保留一次),今天这道题是它的进阶版:每个元素最多保留两次。

延续昨天的双指针思路,但需要增加一个计数器来记录当前元素出现的次数。当遇到重复元素时,判断已出现的次数是否小于2,决定是否保留。

三、代码实现与注意点

注意点

  1. 边界条件:数组长度 ≤ 2 时,无需处理

  2. slow初始值:从2开始,因为前两个元素无论是什么都可以保留

  3. 比较索引slow-2而不是slow-1,这是保证最多保留两个的关键

  4. 通用扩展:如果题目改成最多保留k个,只需将2改成kslow-2改成slow-k

复杂度

  • 时间复杂度:O(n),一次遍历

  • 空间复杂度:O(1),只使用了常数个变量

  • 四、操作

  • 五、今日收获

    • 昨天:比较fastslow-1

    • 今天:比较fastslow-2

    • 这种细微调整体现了算法的可扩展性

    • 不需要额外的计数器变量

    • 利用数组有序和已处理区域的性质,直接通过索引比较

    • 代码简洁但逻辑深刻

    • 培养举一反三的能力

    • 已处理区域的前k个元素就是“标准答案”的前k个

    • 重复元素必然连续出现

    • 理解了“最多保留k个”的通用模板

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 18:09:56

智能服务机器人EMC整改学习笔记

其实,80%以上的EMC问题可以在设计阶段用很小的代价规避掉,真正到了实验室贴铜箔、套磁环的时候,不仅费时费力,还往往以牺牲产品性能和外观为代价。 机器人要测什么 智能服务机器人属于信息技术设备或家用电器类,核心…

作者头像 李华
网站建设 2026/4/24 18:05:47

太极重命名:Windows文件批量重命名的高效利器

在日常工作和学习中,文件管理是一项看似简单却常常耗费大量时间的任务。 尤其是当需要批量处理成百上千个文件时,传统的手动重命名方式显得笨拙且低效。 太极重命名正是为解决这一痛点而生的一款专业工具,它以极简的设计和强大的功能&#…

作者头像 李华
网站建设 2026/4/24 18:05:21

2026年降AI工具保姆级测评:4元到8元价位哪款最值?

选降AI工具最头疼的事情之一,就是价格差别太大,不知道该怎么选。 4块多的嘎嘎降AI,8块钱的比话,还有价格更低的率零,效果到底差多少?我整理了一下这几个月实际使用的记录,把4元到8元这个区间的…

作者头像 李华