#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param numbers int整型一维数组
# @return int整型
#
class Solution:
def MoreThanHalfNum_Solution(self , numbers ):
# write code here
# 算法步骤:我们选择输入数组中第一个元素作为候选元素candidate,
# 并设置其出现次数为count=1。随后遍历数组。当遇到与candidate相同的元素,
#count+1;不同的元素,count-1。当count为0的时候,选择下一个元素为候选元素,
#并且置count=1。遍历到数组的最后,剩下的candidate就是要求的结果
#Step1: 找众数
can = -1
cnt = 0
n = len(numbers)
for i in range(0, n):
if cnt == 0:
can = numbers[i]
cnt += 1
else:
if can == numbers[i]:
cnt += 1
else:
cnt -= 1
print ("Can: ", can)
#Step2: 判断是否超过一半
cnt = 0
for i in range(0, n):
if numbers[i] == can:
cnt += 1
if cnt > n // 2:
return can
return 0