题目: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