美文网首页
摩尔投票法

摩尔投票法

作者: 缸里有绿粥 | 来源:发表于2020-07-14 01:56 被阅读0次

    摩尔投票法又叫多数投票法。

    解决的问题
    如何在任意多的候选人中,选出获得票数最多的那个

    算法包括两个阶段

    1. 对抗阶段:分属两个候选人的票数两两对抗抵消
    2. 计数极端:计算对抗结果中最后留下的候选人票数是否有效

    代码框架

    for n in nums:
        if count == 0:
            major = n
        if n == major:
            count++
        else count--

    复杂度
    线性时间复杂度,常数级空间复杂度

    题目
    Leetcode #169 多数元素
    Leetcode #面试题 17.10 主要元素
    Leetcode #229 求众数II

    总结
    1. 如果至多选一个代表,那么他的票数要至少超过1/2的票数
    2. 如果至多选两个代表,票数至少要超过1/3的票数
    2. 如果至多选m个代表,那他们的票数至少要超过1/(m+1)

    相关文章

      网友评论

          本文标题:摩尔投票法

          本文链接:https://www.haomeiwen.com/subject/jvbthktx.html