一道很简单的题,但一开始做的很随便,题目也没看全:
n = int(input())
lst = list(map(int, input().split(" ")))
m = 0
temp = {}
for i in list(set(lst)):
if lst.count(i) > m:
m = lst.count(i)
temp[i] = lst.count(i)
else:
continue
print(max(temp, key=temp.get))
后来发现过是过了,但我没考虑多个相同值打印最小值的情况,非常离谱
于是有了第二版:
n = int(input())
lst = list(map(int, input().split()))
count_dict = {}
for num in lst:
if num not in count_dict:
count_dict[num] = 1
else:
count_dict[num] += 1
max_count = max(count_dict.values())
min_num = float("inf")
for key, value in count_dict.items():
if value == max_count and key < min_num:
min_num = key
print(min_num)
这段代码基本上是考虑充分了,但是简单题写这么多行实在有点难受,于是继续改,有了第三版:
n = int(input())
lst = list(map(int, input().split()))
count_dict = {}
for num in lst:
count_dict.setdefault(num, 0)
count_dict[num] += 1
max_count = max(count_dict.values())
min_num = min(key for key, value in count_dict.items() if value == max_count)
print(min_num)
用来setdefault直接抵消了前面的if判断,后面用列表表达式计算最小值看起来也舒适不少。