我算法中最糟糕的运行时间是什么



所以我知道我的算法在O(n)运行时,因为它只需要一次循环列表,但是我不知道如何计算最坏情况的运行时间。它仍然是线性的,因为无论如何它都在循环吗?

 def find_duplicates(lst):
    duplist = []
    for i in range(0, len(lst)):
        if abs(lst[i]) == len(lst):
            element = -1
        else:
            element = lst[abs(lst[i])]
        if element > 0:
            lst[abs(lst[i])] = -lst[abs(lst[i])]
        elif element == 0:
            lst[abs(lst[i])] = -len(lst)
        else:
            if abs(lst[i]) == len(lst):
                duplist.append(0)
            else:
                duplist.append(abs(lst[i]))
    return duplist

是的,确实是o(n)。在最坏的情况下,您所有的IF都会失败,并且将执行每个IF块的最后一句话。因此,每个迭代都执行6个语句。然后,您的时间复杂性仍为o(6n),它仍然是o(n)。

是的次数作为输入列表的大小,无论满足哪个条件,都没有嵌套的其他迭代。

最新更新