py摩尔投票算法

Posted 21座的胖子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了py摩尔投票算法相关的知识,希望对你有一定的参考价值。

###题目

思路

这道题用摩尔投票算法做,先设定一个summ为0统计个数。再初始化一个变量num。
从第一个数开始,遇到和它一样的数就加1,不一样就减一。最后留下的肯定是众数。但是有一个前提,当summ为0时,遇到不同的数不减1,而是num变为这个数。

逻辑

遍历数组,先判断summ是否为0,为0的话则赋值给num;不为0的话进行判断:当前数是否等于num,相等则summ+1,不等则summ-1

代码

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        num = summ = 0
        for i in nums:
            if summ == 0:
                num = i
            if num == i:
                summ += 1
            else:
                summ -= 1
        return num

以上是关于py摩尔投票算法的主要内容,如果未能解决你的问题,请参考以下文章

[E摩尔投票] lc169. 多数元素(多数投票算法+经典)

高频算法--找一堆数字中众数的高效方法--摩尔投票法

你听说过摩尔投票法吗

你听说过摩尔投票法吗

查找之摩尔投票算法

摩尔投票法