题解 | #数组中出现次数超过一半的数字#

数组中出现次数超过一半的数字

https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

class Solution:
    def MoreThanHalfNum_Solution(self, numbers: List[int]) -> int:
        countMap = {}
        listLength = len(numbers)

        # 长度过长,报错,今早返回
        if listLength > 50000:
            raise Exception("List Length Exceed")

        # 取得比较目标数字
        halfNum = len(numbers) / 2

        for _, item in enumerate(numbers):
            # 如果数字超过范围那么尽早返回
            if item > 10000 or item < 0:
                raise Exception("Number Exceed")

            # 对数字出现的次数做统计
            if item in countMap:
                countMap[item] += 1
            else:
                countMap[item] = 1
            
            # 如果出现此时超过目标,那么返回,否则接着循环
            if countMap[item] > halfNum:
                return item

        raise Exception("No Such item in list")

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务