题目描述
给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式
输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式
输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
输入规范
本题输入是最为常见的输入方式,第一行输入数量,第二行输入数据并且以空格分隔.以换行结尾.
这里给出python最常用的输入解析方法:
str_in = input('用空格分隔多个数据:')
#用空格分隔多个数据:123 456 789 111 222
num = [int(n) for n in str_in.split()]
这样解析结果是一个数组num
,成员类型为int
.
split()
方法默认以空格分开,可以修改为逗号等.
如果要求以其他方式解析亦可以在此基础上做修改.
思路
创建一个变量对id
和common
,id
保存当前符合要求的数字,common
保存出现次数.
当有次数较小 或者 次数相等且数字大小小于当前id时更新.
出现次数用collection
类的counter
方法得到.
源码
import sys
from collections import Counter
def max_list(lt):
id=20000
common = 0
for i in lt:
if lt.count(i) >common or (lt.count(i)==common and i<id) :
id=i
common = lt.count(i)
return id
if __name__=='__main__' :
#print("test text")
list_size=input()
container=list()
str_in = input()
container=[int(n) for n in str_in.split()]
#print(container)
#print (list_size)
#print(len(container))
assert len(container)!= list_size
print(max_list(container))