#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