剑指Offer 39 数组中出现次数超过一半的数字

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

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def MoreThanHalfNum_Solution(self, numbers):
 4         n = len(numbers)
 5         if n == 0:
 6             return 0
 7         half = n // 2
 8         dic = {}
 9         for n in numbers:
10             if n in dic:
11                 dic[n] += 1
12             else:
13                 dic[n] = 1
14             if dic[n] > half:
15                 return n
16         return 0
17         # write code here
原文地址:https://www.cnblogs.com/asenyang/p/11014158.html