你能解釋一下這個代碼示例中的 Big O 是什么嗎?
arr = [
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1],
[1, 1]
]
def count_ones(outer_array):
count = 0
for inner_array in outer_array:
for number in inner_array:
count = 1
return count
count_ones(arr)
uj5u.com熱心網友回復:
這完全取決于您對n. 如果您定義n為 2d 矩陣中的單元格數,則此嵌套回圈O(n)相對于它具有線性復雜性。
另一方面,如果您定義n為外部陣列m的長度和內部陣列的最大長度,則時間復雜度為O(n*m)。
無論哪種方式,復雜性都不會,O(n^2)因為在這種情況下,它需要是一個邊長相等的方陣n。
uj5u.com熱心網友回復:
鑒于 n 被定義為嵌套陣列中元素的總數:
for inner_array in outer_array:
for number in inner_array:
是 O(n),因為它訪問每個元素一次。
count = 1
是 O(1) 因為它是基本算術。
O(1) * O(n) = O(n)
uj5u.com熱心網友回復:
基本上,你有一個二維陣列,每個元素都選擇一次。通常情況下它是 O(N),其中 N - 元素數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359114.html
