python-3.x - 这个算法是 O(1) 还是 O(n) 空间复杂度

标签 python-3.x algorithm space-complexity

我有一个家庭作业问题,要求我在时间复杂度为 O(n) 和空间复杂度为 O(1) 的程序中找到一个缺失的数字。

我觉得我对什么构成了 O(1) 空间复杂度有了很好的理解,但是我不确定将一个变量赋给给定数组中的最大值是否会使它成为 O(n) 空间复杂度。下面的代码是我专门写的

def findMissing(A):
    greatest = 0
    for i in range(len(A)):
        if A[i] > greatest:
            greatest = A[i]

我认为它仍然是 O(1),因为我试图保留的 O(n) 是包含最大值以及所有其他值的完整数组,但同时我的变量仍然与输入大小有关,所以我不确定。

最佳答案

由于您的代码在数组中循环一次,因此它的时间复杂度为 O(n)。存储仅维护 1 个变量,因此它具有 O(1) 空间复杂度。我假设您为了这个问题而放弃了 return 语句,否则,请确保您也包含了它。

关于python-3.x - 这个算法是 O(1) 还是 O(n) 空间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947623/

相关文章:

Python:带有对象列表的对象——根据列表成员的属性创建方法

performance - 检测长列表中出现的对的算法

algorithm - 有效的猜测算法

algorithm - 美式排序和基数排序有什么区别?

python - 如何使用python将整个文件代码复制到另一个文件中

python-3.x - 使用 or 条件过滤 django View

python - python 中的 turtle 迷宫。我不知道如何避免 turtle 穿墙和作弊

python - 基于 Id 和依赖关系对工作订单进行排序的算法

data-structures - 跳跃列表的预期空间消耗

algorithm - 后缀数组与后缀树