有人可以帮忙找到以下代码的复杂性吗?
def mystery(n):
sum = 0
if n % 2 == 0:
for i in range(len(n + 10000)):
sum += 1
elif n % 3 == 0:
i, j = 0, 0
while i <= n:
while j <= n:
sum += j - 1
j += 1
i += 1
else:
sum = n**3
以下代码的时间复杂度是否为O(n ^ 2),因为在最坏的情况下,elif语句将被执行,因此外部while循环将执行n次,而嵌套的while循环将执行n一次一次是因为我们从未重置过j吗?因此,我们将有O(n ^ 2 + n),并且由于前导项是n ^ 2,所以复杂度将是O(n ^ 2)?
答案 0 :(得分:0)
在elif
部分:
i
= 0时,while j <= n:
循环为O(n)。i
> 0时,j
= n + 1,因此while j <= n:
循环为O(1)。因此elif
部分为O(n)+ O(n * 1)= O(n + n)= O(n)。