劍指Offer-39 陣列中出現次數超過一半的數字
阿新 • • 發佈:2018-12-04
題目:
陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為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
times, last, tag = 0, 0, 0
for i, v in enumerate (numbers):
if i == 0 or times == 0:
tag = numbers[i]
times = 1
last = numbers[i]
continue
if numbers[i] == tag:
times += 1
else:
times -= 1
count = 0
for v in numbers:
if v == last:
count += 1
if count > len(numbers)/2.0:
return last
else:
return 0
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
numDict = {}
for num in numbers:
if num not in numDict:
numDict[num] = 1
else:
numDict[num] += 1
for k, v in numDict.items():
if v > len(numbers)/2.0:
return k
return 0