此算法是O(1)还是O(n)空间复杂度

时间:2019-09-15 19:40:15

标签: 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)是包含最大值和所有其他值的完整数组,但同时我的变量仍然与输入大小有关,所以我不确定。

1 个答案:

答案 0 :(得分:3)

由于代码循环遍历数组一次,所以时间复杂度为O(n)。存储仅维护1个变量,因此具有O(1)空间复杂度。我假设您出于问题的考虑而放弃了return语句,否则,请确保也将其包括在内。

相关问题