Page Top

基础算法——摩尔投票法 学习笔记

基础算法——摩尔投票法 学习笔记

摩尔投票法求众数:空间 \(\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)

例题:P2397 yyy loves Maths VI (mode)

posted @ 2024-08-04 17:06  RainPPR  阅读(5)  评论(0编辑  收藏  举报