删除有序序列中的重复项 python

本文介绍了一种使用Python实现的删除有序序列中重复元素的方法,通过设置哨兵和for循环,不使用额外空间,仅保留不重复元素,如输入[0,0,1,1,1,2,2,3,3,4,4,4,5],输出为[0,1,2,3,4,5]。
摘要由CSDN通过智能技术生成

‘’’
—个有序序列,请原地删除序列中重复出现的元素,返回删除重复元素后的序列长度。

使用 。O(1)额外空间来完成这个任务,例如 [0,0,1,1,1,2,2,3,3,4,4,4,5],最终返回的长度 , 序列前6个元素是 0 1 2 3 4 5

‘’’
‘’’
设置—个哨兵index,初始值赋为0。用—个for循环从索引1开始遍历lst,i做送代变量, 如果 lst[i]!=lst[index],就说明lst[i]是—个比lst[index]大的元素,它应该被放置在index+1的位置 上

‘’’

def remove_duplicates(lst):
    index = 0
    for i in range(1, len(lst)):
        if lst[i] != lst[index]: #如果不相等 就移动哨兵
            index += 1
            lst[index]=lst[i] #将不相等的元素放在哨兵的位置上
    return lst[0:index+1]
if __name__ == '__main__':
    lst= [0,0,1,1,1,2,2,3,3,4,4,4,5]
    print(remove_duplicates(lst))
  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值