题目要求:给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
一、暴力解法
def max_num(array):
m= len(array)//2 + 1
for i in range(0,len(array)):
if array.count(array[i]) >= m :
return array[i]
break
else :
return '没有符合条件的数'
二、哈希表
from collections import Counter
def max_num(array):
if array == []:
return None
count=Counter(array)
return max(count.keys(), key=count.get)