每日分享 – 82 – 找出列表中出现次数超过列表长一半的元素

有一个数字列表,要找出列表中出现次数超过列表长度一半的数字,如果有2个或2个以上数字出现的次数都超过了列表长度的一半,找出第一个满足条件的数字即可,如果列表元素个数是奇数,列表元素个数的一半取整数部分(四舍五入)

例如: 长度为21的列表的一半取11

def moreThanHalfNum(numbers):
    d = {}
    maxNum = 'no'
    listCount = len(numbers)
    
    for n in numbers:
        if d.get(n) is None:
            d[n] = 1
            if maxNum == 'no':
                maxNum = n
        else:
            d[n] += 1
        if n != maxNum and d.get(n) > d.get(maxNum):
            maxNum = n
        if d.get(maxNum) > listCount // 2:
            return maxNum
    return 'no' 

print(moreThanHalfNum([1, 2, 3, 4, 1, 1, 1, 1]))

1

正文完