有人可以幫忙找出以下代碼的復雜性嗎?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)?
1 回答

子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
在該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)。
添加回答
舉報
0/150
提交
取消