吴师兄学算法day06 双指针 26. 删除有序数组中的重复项

发布时间 2024-01-12 11:49:47作者: o蹲蹲o

题目:26. 删除有序数组中的重复项

易错点:

  • 为什么不可以写大于nums[slow]
    • 因为会出现多个[0,1,2,2,...]情况

代码示例:

from typing import List


class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if len(nums) == 1:
            return 1
        fast = 1
        slow = 1
        while fast < len(nums):
            if nums[fast] > nums[fast-1]: # 要写fast-1    # ???为什么不能写nums[fast] > nums[slow]
                # 因为会出现 # [0,1,2,1,1,2,2,3,3,4] 当slow=3 nums[slow]=1;此时fast=6时,nums[fast]=2 移动后变为[0,1,2,2,1...]
                # 可以在这个位置debug
                nums[slow] = nums[fast]
                fast += 1
                slow += 1
            else:  # 不大于就只移动快指针
                fast += 1

        return slow


if __name__ == '__main__':
    obj = Solution()
    nums = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4]
    out = obj.removeDuplicates(nums)
    print(out)

扩展写法:

总结:

  • 其实我可以写出来的。
  • 再听一听老师讲的。

参考:

https://ahym1n4sq5.feishu.cn/docx/AQwAd0mWdoz7UtxSqNAc7K9tnaf