python里list的remove和pop方法的时间复杂度是多少?
remove是用来删除指定数值的元素
my_list.remove(val)
pop是用来删除指定位置的元素,比如下面就是删除第一个
my_list.pop(0)
它们都是$O(n)$的吗?还是$O(1)$的?
1个回答
就我知道的 :
.remove(value) --> O(n)
.pop(index) --> O(n-index)
说明下, O(pop())可能一开始由于index查找的原因会误以为是O(1),但其实在完成删除这个步骤之后,所有在这个被删除位置之后的元素的index都会被向前移一位, 或者说向前补充。 并且pop()最后会返回被删除的元素值。
remove()就很直接了, 从第0个元素找起, 直到找到第一个match的元素并删除(不会像pop一样返回被删掉元素的值), 然后剩余元素向前补充。
SofaSofa数据科学社区DS面试题库 DS面经