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

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值