1. 程式人生 > >劍指Offer-39 陣列中出現次數超過一半的數字

劍指Offer-39 陣列中出現次數超過一半的數字

題目:

陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為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