求某個數出現的次數超過了總數的一半

'''
春節期間小明使用微信收到不少個紅包,很是開心。在查看領取紅包記錄時發現,某個紅包金額出現的次數超過了紅包總數的一半。請幫小明找到該紅包金額。
寫出具體算法思路和代碼實現,要求算法儘量高效。
給定一個紅包的金額數組gifts及它的大小n,請返回所求紅包的金額。若沒有金額超過總數的一半,返回0。

測試樣例:
[1,2,3,2,2],5
返回:
2
'''
def weixin(list1):
    key = list1[0]
    count = 1
    for item in list1[1:]:
        if key == item:
            count += 1
        else:
            count -= 1
        if count == -1:
            key = item
            count = 1
    flag = 1
    for item in list1:
        if key == item:
            flag += 1
        else:
            flag -= 1
    if flag >= 1:
        return key
    return 0

list_1 = [1, 2, 3, 2, 2]
print(weixin(list_1))
相關文章
相關標籤/搜索