我在考試前得到了一個要做的練習列表,他們沒有評分,這就是爲什麼我沒有將他們標記爲家庭作業。降低數組中最大重複元素的複雜度
該算法採取鑑於這種算法號碼
的數組:
Algo-X(A)
i=1
j=1
m=0
c=0
while i ≤ |A|
if A[i] == A[j]
c=c+1
j=j+1
if j > |A|
if c > m
m=c
c=0
i=i+1
j=i
return m
問題1:分析ALGO-X的複雜性。
問題2:編寫一個與Algo-X完全一樣的算法,但是具有嚴格更好的漸近時間複雜度的算法。
現在,這個時間複雜度是O(n^2)對不對?
算法本身從我理解的數組中搜索內容並返回數組中最大重複數的個數。
我該如何降低複雜性?
我不能認爲有一個數字是N/2次出現。
Thanks guys guys
你確定線'c = c + 1 j = j + 1'是否正確? –
你可以使用散列表嗎?在這種情況下,O(n)應該是可能的。 –
更正,謝謝! 我必須只使用數組,但即使使用哈希映射,如果所有數字都不相同,(1,2,3,4,5)複雜度將是相同的。他要求嚴格的更好的解決方案 –