题目描述
解题思路
- 先求众数。
- 再求中位数。
Python代码
'''
解题思路
1. 求众数. 每个数字的频次用hash存起来,再求最多次数的数字,存成数组。
2. 求中位数
'''
def mode(lst):
# 求众数
hash = dict()
for l in lst:
if l in hash:
hash[l] += 1
else:
hash[l] = 0
res = [] # 众数
most = 0 # 次数
for key in hash:
if hash[key] > most:
most = hash[key]
res = [key] # 众数
elif hash[key] == most:
res.append(key)
return res
def median(lst):
lst = sorted(lst)
median_r = lst[0]
if len(lst) % 2 == 0:
median_r = int((lst[int(len(lst)/2)] +lst[int(len(lst)/2)-1])/2)
elif len(lst) % 2 == 1:
median_r = lst[int(len(lst)/2)]
return median_r
# lst = list(map(int, input().strip().split()))
lst = list(map(int, '5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39'.split()))
mode_r = mode(lst)
median_r = median(mode_r)
print(median_r)