LeetCode数组刷题笔记2(python)

删除有序数组中的重复项

0.审题

非严格递增序列:递增但存在重复

1.快慢指针

def removeDuplicates(self, nums: List[int]) -> int:
    #slow记录出现过的数字
    slow=0
    #fast遍历列表
    for fast in range(len(nums)):
        #当新数字出现时
        if nums[slow]!=nums[fast]:
            #slow向前移一格以存储新数字
            slow+=1
            #将fast处的新数字放入slow移至的格
            nums[slow]=nums[fast]
        #当没有新数字出现(fast在相同数字区域内移动)
        else:   
            #fast前移直至出现新数字
            fast+=1
    #返回列表有效长度(最大下标+1)
    return slow+1

2.去重排序方法

sorted(set(nums))

#通过遍历方法改变原有的nums列表
for i,x in enumerate(sorted(set(nums))):
    nums[i]=x
#输出改变后列表的有效长度
return i+1

你可能感兴趣的:(leetcode,笔记,python)