【华为OD】C卷真题 100%通过:查找众数及中位数 python代码实现[思路+代码]

Java代码实现:

【华为OD】C卷真题 100%通过:查找众数及中位数 Java代码实现[思路+代码]-CSDN博客

JS代码实现:

【华为OD】C卷真题 100%通过:查找众数及中位数 JS代码实现[思路+代码]-CSDN博客 

 C语言代码实现:

【华为OD】C卷真题 100%通过:查找众数及中位数 C语言代码实现[思路+代码]-CSDN博客

 C++代码实现:

【华为OD】C卷真题 100%通过:查找众数及中位数 C/C++代码实现[思路+代码]-CSDN博客

题目描述:

1.众数是指一组数据中出现次数量多的那个数,众数可以是多个

2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数

3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数

输入描述

输入一个一维整型数组,数组大小取值范围 0

输出描述

输出众数组成的新数组的中位数

示例1

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

10 11 21 19 21 17 21 16 21 18 15

输出

21

示例2

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

2 1 5 4 3 3 9 2 7 4 6 2 15 4 2 4

输出

3

示例3

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

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

输出

7

     986                                                         
                                                            
              +---+                                                          
  3            |   |       ++                               +       +---|   
  |           |   | 3      +                6               +  |   +   |        +
  |      +     |   |       +         +                      +    |  +   |       +
  |      +    |   +---+    +        +        +++++          +   |  +   |        +
  |      +    | +      |   +   +----+        |   |          +   |  +   |        +
  |      +  3 | +      |   +   +    +      2 |   |     2    +   |  +   |        +
  |      +    | +      |   +   +    +        |   |          +   |  +   |        +
  |      +---+ |     |    |  |    +    ----+   |   +---+    |  |  +   |         +
  |      |     |     |    |  |    +    |       |   |   |    |  |  +   |         +
  |    1 |     |     | 8  |  |    +  1 |   |    | 1 |   | 1 |   |  +   |        +
  |      |     |     |    |  |    +    |   |    |   |   |   |   |  +   |        +
  |  +---+     |     +---+   |    ++---+    ++   +---+   +---+   |  +   |        +
  |  |         |         |   |    |         ++              |   |  |+   |        +
  |0 |         |         | 0 |  0 |         ++              | 0 |  |+   |        +
  |  |         |         |   |    |         ++              |   |  |+   |        +
  +---+         +          +-------+                       +---+| +|+   |        +
                +                                                    +   |        +
    0   1   2   3   4   5   6   7   8   9  10  11  12 + v:    w  u m    u 1 0 2 4
 

题目解析:

        先对数组中的每个数值次数进行统计,可以使用map,接着找到最大次数,然后这个次数来找对应的值,求中位数即可

代码实现:

def get_mid_num(nums, lens):
    nCnts = [0] * 1001
    mv = 0
    ans = []
    ansIndex = 0

    for i in range(lens):
        nCnts[nums[i]] += 1
        if mv < nCnts[nums[i]]:
            mv = nCnts[nums[i]]

    for i in range(1001):
        if nCnts[i] == mv:
            ans.append(i)
            ansIndex += 1

    ln = ansIndex
    if ln % 2 == 0:
        return (ans[ln // 2] + ans[ln // 2 - 1]) // 2

    return ans[ln // 2]


arr = [int(i) for i in input().split()]
size = len(arr)
print(get_mid_num(arr, size))

【华为OD】C卷真题 100%通过:查找众数及中位数 python代码实现[思路+代码]_第1张图片

你可能感兴趣的:(杂谈,华为od,c语言,python,java,javascript,C++,码蚁软件)