python - 我的算法最坏情况下的运行时间是多少

标签 python

所以我知道我的算法运行时间为 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 block 的最后一条语句将被执行。因此,每次迭代执行 6 条语句。尽管如此,你的时间复杂度仍然是 O(6n),仍然是 O(n)。

关于python - 我的算法最坏情况下的运行时间是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54992558/

相关文章:

python - 根据 python 中具有多个参数的现有函数中的一个自由参数创建一个可调用函数

python - 列表项的 Sharepoint 过滤器 (GetListItems)

Python - 运行代码(迭代?)只能运行一次

python - 如何使用 SymPy 绘制笛卡尔方程?

python - pygame surface.blit(bg,pos,pos) 对比。 surface.blit(bg,pos),你明白这个吗?

python - 重新索引排序系列

python - Django 数据库到 postgresql

python - python 中的子进程错误

Python:如何将变量保存在内存中,以便可以从其他 Python 脚本中调用它?

python - 函数式 python 编程和条件