題目
數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。如果不存在則輸出0。
思路
用一個變量記錄當前數字出現的次數,下一個數字不同時變量減一,否則加一。
代碼
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
count = 0
preNum = 0
for i, v in enumerate(numbers):
if i == 0:
count = 1
preNum = v
continue
if v != preNum:
count -= 1
else: count += 1
if count == 0:
preNum = v
count = 1
count = 0
for i in numbers:
if i == preNum: count += 1
return preNum if count > len(numbers) / 2 else 0