众数和中位数-华为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)

全部评论

相关推荐

没hc还海面!呜呜,避雷
回收旧报纸:没有海面吧,我做完笔试有一个多月了,还没消息
点赞 评论 收藏
分享
10-09 17:17
已编辑
门头沟学院 Java
活泼的代码渣渣在泡池...:同学你好,我也是学院本,后天要面这个亚信科技,是实习,请问问题都啥样呀,我项目就做了网上的,这是第一次面试
投递多益网络等公司10个岗位
点赞 评论 收藏
分享
哇哇的菜鸡oc:他这不叫校招offer,而是实习offer
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

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