众数和中位数-华为OD机试 2022

题目描述

解题思路

  1. 先求众数。
  2. 再求中位数。

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)

全部评论

相关推荐

牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 17:10
什么素质,我请问呢,要掉小珍珠了。。。又憋屈又生气
Steven267:这不喷回去?花钱是大爷,记住这个道理
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务