摩爾投票演算法

2021-09-12 05:37:14 字數 486 閱讀 1693

思路一:使用map集合,記錄元素的出現次數

class solution 

return 0;

}}

思路二:用到的演算法是:摩爾投票演算法

演算法在區域性變數中定義乙個序列元素(value)和乙個計數器(count),

初始化的情況下計數器為0.

演算法依次掃瞄序列中的元素,當處理元素x的時候,如果計數器為0,那麼將x賦值給value,然後將計數器count設定為1,如果計數器不為0,那麼將序列元素value和x比較,如果相等,那麼計數器加1,如果不等,那麼計數器減1。

最後儲存的序列元素(value),就是這個序列中最多的元素。

class solution else if(val==x) 

++counts;

else

--counts;

} return val;

}}

摩爾投票演算法

在它最簡單的形式就是,查詢最多的元素,也就是在輸入中重複出現超過一半以上 n 2 的元素。如果序列中沒有最多的元素,演算法不能檢測到正確結果,將輸出其中的乙個元素之一。當元素重複的次數比較小的時候,對於流演算法不能在小於線性空間的情況下查詢頻率最高的元素。假設這個陣列中共有n個元素,我們可以把數值不...

演算法 摩爾投票

摩爾投票 問題 majority element 若有乙個陣列l,長度為n,找出是否有乙個數n,n的出現次數大於等於n 2。問題不算太難,一般可以通過遍歷計數,或者排序找中位數的辦法來解決。但是如果要求時間複雜度是o n 空間複雜度是o 1 那麼恐怕就沒那麼簡單了。摩爾投票演算法正好是這麼乙個o n...

演算法 摩爾投票

摩爾投票 問題 majority element 若有乙個陣列l,長度為n,找出是否有乙個數n,n的出現次數大於等於n 2。問題不算太難,一般可以通過遍歷計數,或者排序找中位數的辦法來解決。但是如果要求時間複雜度是o n 空間複雜度是o 1 那麼恐怕就沒那麼簡單了。摩爾投票演算法正好是這麼乙個o n...