题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/
视频链接:https://www.bilibili.com/video/BV18G5UzzE8c/
初次解题与思考
延续昨天的双指针思路,但需要增加一个计数器来记录当前元素出现的次数。当遇到重复元素时,判断已出现的次数是否小于2,决定是否保留。
实践代码如下:
学习心得:
1、这道题是昨天的延伸,核心思路还是双指针。昨天是比较 nums[fast] 和 nums[slow-1],这道题是比较 nums[fast] 和 nums[slow-2]。掌握了模板后,改一个数字就能适应不同的“最多重复次数”要求。
2、如果题目改成“每个元素最多出现 k 次”,那比较对象就是 nums[slow-k]。这个规律很重要,能举一反三。
3、带计数变量的解法虽然代码长一点,但逻辑更直观:遇到重复就 count++,不重复就重置 count。两种解法都值得掌握。
4、前几个元素的处理方式很关键:昨天前 1 个元素保留,这道题前 2 个元素保留。所以慢指针初始值就是“需要保留的元素个数”。