# -*- coding:utf-8 -*-
class Solution:#不用count() 时间复杂度为O(n)
def MoreThanHalfNum_Solution(self, numbers):
# write code here
if not numbers:
return 0
n=len(numbers)
num=numbers[0]
cnt=1
#如果存在一个数大于一半数组长度的话
for i in range(n):
if num==numbers[i]:
cnt+=1
else:cnt-=1
if cnt==0:#重新换一个数试试
num=numbers[i]
cnt=1
#验证阶段 如果num个数大于一半数组长度则 num是确定的且 cnt*2>n
cnt=0
for i in range(n):
if num==numbers[i]:
cnt+=1
return num if cnt*2>n else 0
京公网安备 11010502036488号