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

劍指offer 28. 陣列中出現次數超過一半的數字

原題

題目: 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。

Reference Answer

思路分析

  1. 首先確定超過字元長度一半的元素:先排序,取出數值中間數值;
  2. 檢查是否是真正超過字元長度一半:遍歷陣列進行該值出現次數計數,完成鑑定。
# -*- coding:utf-8 -*-
class Solution:
    def MoreThanHalfNum_Solution(self, numbers):
        # write code here
        if not numbers:
            return 0
        index = int(len(numbers)/2)
        count = 0
        numbers.sort()
        target = numbers[index]
        for x in numbers:
            if x == target:
                count+=1
        if count > index:
            return target
        else:
            return 0