基础算法——摩尔投票法 学习笔记
基础算法——摩尔投票法 学习笔记
摩尔投票法求众数:空间 \(\mathcal O(1)\),时间 \(\mathcal O(n)\) 求众数。
记录两个数 \(x,c\),表示当前众数为 \(x\) 且相对出现次数为 \(c\)。
一个一个数加入 \((q)\):
\[\begin{array}{ccl}
q = x &\to& c := c + 1\\
c = 0 &\to& x := q\\
q \neq x &\to& c := c - 1
\end{array}
\]
则最后 \(x\) 为众数。
代码:
most, cnt = 0, 0
for i in arr:
if most == i:
cnt = cnt + 1
if cnt == 0:
most, cnt = i, 1
if most != i:
cnt = cnt - 1
print(most)
本文来自博客园,作者:RainPPR,转载请注明原文链接:https://www.cnblogs.com/RainPPR/p/18341954
如有侵权请联系我(或 2125773894@qq.com)删除。