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

全部评论

相关推荐

10-14 13:25
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 3 评论
分享
牛客网
牛客企业服务