Python解法

# -*- coding:utf-8 -*-
class Solution:#不用count()  时间复杂度为O(n)
    def MoreThanHalfNum_Solution(self, numbers):
        # write code here
        if not numbers:
            return 0
        n=len(numbers)
        num=numbers[0]
        cnt=1
        #如果存在一个数大于一半数组长度的话
        for i in range(n):
            if num==numbers[i]:
                cnt+=1
            else:cnt-=1
            if cnt==0:#重新换一个数试试
                num=numbers[i]
                cnt=1
        #验证阶段 如果num个数大于一半数组长度则 num是确定的且 cnt*2>n
        cnt=0
        for i in range(n):
            if num==numbers[i]:
                cnt+=1
        return num if cnt*2>n else 0
全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务