zoukankan      html  css  js  c++  java
  • 求某个数出现的次数超过了总数的一半

    '''
    春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。
    写出具体算法思路和代码实现,要求算法尽可能高效。
    给定一个红包的金额数组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))
  • 相关阅读:
    洛谷P1357 Solution
    洛谷P3469 Solution
    洛谷P2617 Solution
    CF818F Solution
    CF802K Solution
    CF519E Solution
    在代码中改变log的级别
    Java非对称加密解密
    mvn test 远程调试
    rsyn实现服务器源码同步
  • 原文地址:https://www.cnblogs.com/l-jie-n/p/10140220.html
Copyright © 2011-2022 走看看