有一个数字列表,要找出列表中出现次数超过列表长度一半的数字,如果有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
正文完