我想找到最頻繁發生的元素的列表,O(n)
時間和空間O(1)
最頻繁出現的元素。查找具有O(n)的時間和O(1)空間
首個解決方案
from collections import Counter
def max_repetitions(elements):
return max([v for k, v in Counter(elements).items() if v > 1])
空間複雜度是O(n)
。我不確定時間複雜性。是O(nlogn)
還是O(n)
?
解決方法二
def max_repetitions(elements):
counter = 0
for k, v in Counter(elements).items():
if v > 1 and counter < v:
counter = k
return counter
什麼是該解決方案的時間複雜度?是O(nlogn)
還是O(n)
?
有沒有其他辦法?
這兩個看起來像O(n)的空間,在最壞情況下的複雜性。如果你的初始列表等於'range(1000)',那麼你的計數器將佔用1000個插槽。 (是的,它仍然被認爲佔用空間,即使你從來沒有給它一個變量名) – Kevin
他們都應該有時間爲O(n)的複雜性。 –