题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
代码
双重for循环
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
res = []
for j in numbers:
count = 0
for n in numbers:
if j == n:
count +=1
res.append(count)
result = max(res)
if result <= len(numbers)/2:
return 0
else:
index = res.index(result)
return numbers[index]
s = Solution()
res = s.MoreThanHalfNum_Solution([1,2,3,2,2,2,5,4,2])
print(res)
用字典解决
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
dict = {}
for no in numbers:
if not dict.has_key(no):
dict[no] = 1
else:
dict[no] = dict[no] + 1
if dict[no] > len(numbers)/2:
return no
return 0