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

C语言代码实现:

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

 C++代码实现:

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

Java代码实现:

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

JS代码实现:

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

python代码实现:

【华为OD】C卷真题 100%通过:查找众数及中位数 python代码实现[思路+代码]-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,接着找到最大次数,然后这个次数来找对应的值,求中位数即可

代码实现:


const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readLine = async () => (await iter.next()).value;

function getMidNum(nums, lens) {
  let nCnts = new Array(1001).fill(0);
  let mv = 0;
  let ans = [];
  let ansIndex = 0;

  for (let i = 0; i < lens; i++) {
    nCnts[nums[i]]++;
    if (mv < nCnts[nums[i]]) {
      mv = nCnts[nums[i]];
    }
  }

  for (let i = 0; i < 1001; i++) {
    if (nCnts[i] === mv) {
      ans[ansIndex] = i;
      ansIndex++;
    }
  }

  let len = ansIndex;
  if (len % 2 === 0) {
    return (ans[Math.floor(len / 2)] + ans[Math.floor(len / 2) - 1]) / 2;
  }

  return ans[Math.floor(len / 2)];
}

async function main(){
  let arr = (await readLine()).split(' ').map(Number);
  let size = arr.length;

  console.log(getMidNum(arr, size));
  rl.close();
}

main();

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

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