吴师兄学算法day06 双指针 80. 合并两个有序数组
题目:80. 删除有序数组中的重复项 II
易错点:
- 为什么是slow-2?
- 因为有序
- 当slow -1 说明与上一个相等,当slow-2说明与上一个相等,并且上上一个也相等,就说明已经有3个相等的了。此时要跳过。
- 不相等说明要么是第一次出现,要么是第2次出现。出现新的,此时我记录一下
代码示例:
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
slow = 0 # 赋值前
for fast in range(len(nums)):
# 跳过前2个 有最多保留2个位置
if slow < 2 or nums[fast] != nums[slow-2]:
nums[slow] = nums[fast]
slow +=1
return slow
扩展写法:
总结:
- 吴师兄这题讲的不错。
参考:
https://ahym1n4sq5.feishu.cn/docx/VWIfdyejNoPxiXxIU3ScP0CKnEc