吴师兄学算法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

 

posted @ 2024-01-12 15:23  o蹲蹲o  阅读(3)  评论(0编辑  收藏  举报