劍指offer 數組中出現次數超過一半的數字

題目

數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度爲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
發佈了572 篇原創文章 · 獲贊 47 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章