美文网首页
摩尔投票法

摩尔投票法

作者: 缸里有绿粥 | 来源:发表于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)

相关文章

  • 使用摩尔投票法解决多数问题

    1、什么是摩尔投票法 博耶-摩尔多数投票算法(英语:Boyer–Moore majority vote algor...

  • 摩尔投票法

    提问: 给定一个int型数组,找出该数组中出现次数大于数组长度一半的int值。 解决方案: 遍历该数组,统计每个i...

  • 摩尔投票法

    摩尔投票法又叫多数投票法。 解决的问题如何在任意多的候选人中,选出获得票数最多的那个 算法包括两个阶段 1. 对抗...

  • 摩尔投票法

    题目描述 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/2 ⌋ 次的元素。 分析:采用摩尔投票法,两个...

  • 169. 多数元素

    169. 多数元素 经典面试题 摩尔投票法

  • 【leetcode解题】算法之摩尔投票法

    leetcode题目: 首先我用用了个Map,一旦出现计数超过数组长度一半,直接return。通过。但是觉得这道题...

  • LeetCode—— 多数元素

    题目描述 一、CPP 1. 摩尔投票法: 解题思路:如果我们把众数记为 +1,把其他数记为 −1 ,将它们全部加起...

  • Day15 n个骰子的点数 + 剪绳子 + 数组中出现次数超过一

    TODO: 重做 n个骰子的点数,仔细理清楚思路 重做剪绳子 理解并记忆摩尔投票法 剑指 Offer 60. n个...

  • 力扣题解(数组)

    26. 删除排序数组中的重复项 面试题 16.21. 交换和 面试题 17.10. 主要元素 摩尔投票法 15. ...

  • 力扣(LeetCode) - 229 求众数

    本题可以摩尔投票法来解决 一、题目 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 ...

网友评论

      本文标题:摩尔投票法

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