1. #解1
    2. class Solution:
    3. def removeDuplicates(self, nums: List[int]) -> int:
    4. i = 1
    5. while i < len(nums):
    6. while i < len(nums) and nums[i] == nums[i-1]:
    7. del nums[i]
    8. i += 1
    9. return len(nums)
    10. #解2 用指针(下标),时间复杂度贼小
    11. class Solution:
    12. def removeDuplicates(self, nums: List[int]) -> int:
    13. if not nums:
    14. return 0
    15. n = len(nums)
    16. fast = slow = 1
    17. while fast < n:
    18. if nums[fast] != nums[fast - 1]:
    19. nums[slow] = nums[fast]
    20. slow += 1
    21. fast += 1
    22. return slow
    23. #解2.5 我写的仿照上面的,不知道为什么时间复杂度低一点
    24. class Solution:
    25. def removeDuplicates(self, nums: List[int]) -> int:
    26. slow = 1; fast = 1
    27. while fast < len(nums):
    28. if nums[fast] == nums[fast-1]:
    29. fast += 1
    30. else:
    31. nums[slow] = nums[fast]
    32. fast += 1
    33. slow += 1
    34. return slow