外部for循环和内部if循环的时间复杂度

时间:2020-07-16 15:43:34

标签: python time-complexity

这里tmp是一个列表

res=[]

for e in tmp:
    if not(e in res): 
        res.append(e)

对于此代码,时间复杂度是多少?为什么?

1 个答案:

答案 0 :(得分:0)

for e in res:

此循环计算了len(res)次(称为n)

if not(e in res): 

搜索(由于未对res进行排序)在最坏的情况下也被计算了n次,因为res最多可以包含n个元素

res.append(e)

和append()方法的复杂度为O(1),

所以这个函数的复杂度是O(n ^ 2)

如果不必维护订单,可以使用以下方法使其更快:

res = list(set(tmp))

如果您必须:

from ordered_set import OrderedSet
res = list(OrderedSet(tmp))
相关问题