这是某谷上面的练习题,做完之后,发出来,希望得到大家指点
题目描述
今天的数学课上,数学老师教了一个新的知识:众数。什么是众数?简单来说,就是一堆数字中出现次数最多的那个数字。显然,众数有时只有一个,有时不止一个~ 现在告知你N个整数(有正有负),请你输出这N个整数中的众数,如果众数不止一个,请输出最大的那个。
输入格式
输入共二行。 第一行包含一个正整数N(0<N≤1000),即表示接下来将告知你N个整数,请你求出这N个整数中的众数。 第二行包含N个整数,所有整数都在-50~50范围内。
输出格式
输出包含一个整数,即所求众数。若众数存在多个,请输出数值最大的那个。
基本思路
输入列表-提取集合-集合和0组成字典-把字典所有value都提取成列表,输入最大-字典反查
输入样式
10-13 5 -1 -9 5 34 -13 5 7 5
输出样式
5
[Python] 纯文本查看 复制代码 def get_key(dict, value):
'''
作用:字典由value查key
输入字典和value,输出符合条件的key,形成list
参考https://blog.csdn.net/ssswill/article/details/86618553
'''
return [k for k, v in dict.items() if v == value]
def main():
'''
主函数
:return:
'''
n = input()
n_list = input().split() #输入的数据变成列表
n_set = set(n_list) #输入的数据变成集合(作用去重)
n_set_len = len(n_set) #输入集合的数量
n_set_dict = dict(zip(n_set, [0] * n_set_len)) #集合跟0,变成字典
#开始集合中的遍历计数
for j in n_list:
n_set_dict[j] += 1
# 字典.values 输出字典所有value,并找到最大的值
set_max = max(list(n_set_dict.values()))
#字典反查,根据最大值,查询对应数字,返回最大值
print(max(get_key(n_set_dict, set_max)))
if __name__ == '__main__':
main() |