數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

【題目描述】數(shù)組中有一個數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長度的一半,請找出這個數(shù)字。例如輸入一個長度為9的數(shù)組{1,2,3,2,2,2,5,4,2}。由于數(shù)字2在數(shù)組中出現(xiàn)了5次,超過數(shù)組長度的一半,因此輸出2。如果不存在則輸出0。
【思路】最開始的思路是借助左程云老師的思路,用一個cur和time來找出出現(xiàn)次數(shù)大于數(shù)組一半的字符,后來發(fā)現(xiàn)對于不存在的情況無法判斷,如{3,3,4,4,5}還是會輸出5。故采用字典映射的方式來尋找出現(xiàn)次數(shù)大于一般的字符,同時記得邊界條件的判斷。
代碼:

class Solution:
    def MoreThanHalfNum_Solution(self, numbers):
        # write code here
        n = len(numbers)
        #邊界條件,元素只有一個時
        if n ==1:
            return numbers[0]
        #以時間換空間,采用字典記錄每個數(shù)字的出現(xiàn)次數(shù)
        dict_num = {}
        #時間復雜度為O(n)
        for i in range(0,n):
            if numbers[i] in dict_num.keys():
                dict_num[numbers[i]] +=1
                if dict_num[numbers[i]]>n/2:
                    return numbers[i]
            else: dict_num[numbers[i]] = 1
        return 0
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容