移除元素
关于数组 是
存储在连续内存空间上的相同类型数据的集合
内存中的数据只能覆盖不能删除
期望输出:新列表
删除某个值
新列表有效部分后不考虑
方法双指针法
可以把要删除的值称作沉默值
定义两个指针
一个指针为先行指针可以类比为工兵排地雷 没有地雷告诉大指针向前推进 有地雷 给大材料去填补行进中的坑
也可以将第一个指针 当作检验
第二个指针 当作确定
一指针检验是否是要删除的值不是的话二指针同步跟进 如果是的话 一指针向后继续 二指针停留在原地 指导一指针检验到符合条件的值 或者一指针遍历结束 结束循环
只需要一个循环就可以实现
时间复杂度为O(n)
由于创建新列表
空间复杂度为O(1)
代码实现
lst = [1, 2, 3, 4, 5]
val = 3
cur2, cur1 = 0, 0
while cur1 < len(lst)-1:
if lst[cur1] != val:
lst[cur2] = lst[cur1]
cur2 += 1
cur1 += 1
print(lst, cur2)
欢迎指正
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuoyibo.net 版权所有 湘ICP备2023021910号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务