我有一个作业问题,要求我在具有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)是包含最大值和所有其他值的完整数组,但同时我的变量仍然与输入大小有关,所以我不确定。
答案 0 :(得分:3)
由于代码循环遍历数组一次,所以时间复杂度为O(n)。存储仅维护1个变量,因此具有O(1)空间复杂度。我假设您出于问题的考虑而放弃了return语句,否则,请确保也将其包括在内。