摩尔投票法

原理: 在一个序列中,两两消除不相同的元素,最后如果存在剩下的元素,那它原本的数量一定超过一半。

理解: 有k个帮派,每个帮派有几个人,大家随机站成一排,一同打擂台。如果擂台上没人(count==0)那你就站上去成为守擂的人(major=i,count=1);如果擂台上的人和你处于一个帮派(major==i),那你就也站上去( count+=1);如果擂台上的人和你不是一个帮派(major!=i),那你就杀掉擂台上的一个人(count-=1)。
也就是说,major是守擂的帮派,count是守擂的人。如果最后还有守擂的人(count>0),则major获胜。

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        major = None
        count = 0
        if len(nums)==0:
            return -1
        else:
            for i in nums:
                if count == 0:
                    major = i
                    count += 1
                else:
                    if i == major:
                        count += 1
                    else:
                        count -= 1
        if count > 0:
            return major
        else:
            return -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值