中位数

难度:简单

描述:

给定一个未排序的整数数组,找到其中位数。

中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第 N/2 个数。

样例:

给出数组[4, 5, 1, 2, 3], 返回 3

给出数组[7, 9, 4, 5],返回 5

思路分析:

  1. 升序排序数组
  2. 模拟几个数组的返回值,找到里面的规律,找出数组中对应元素。

代码模板:

/**
 * @param nums: A list of integers
 * @return: An integer denotes the middle number of the array
 */
const median = function(nums) {};
1
2
3
4
5

想一想再看答案

想一想再看答案

想一想再看答案

代码:

  1. 判断奇数偶数,找到对应的下标
/**
 * @param nums: A list of integers
 * @return: An integer denotes the middle number of the array
 */
const median = function(nums) {
  nums.sort((a, b) => {
    return a - b; // 升序排序
  });
  var num = nums.length; // 保存数组长度
  if (num % 2 !== 0) {
    // 判断奇数偶数
    return nums[(num + 1) / 2 - 1]; // 奇数转偶数
  } else {
    return nums[num / 2 - 1]; // 减一 对应数组下标
  }
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  1. 奇数上舍入,找到下标

两种写法一样,但无疑第二种写法更为优雅。

/**
 * @param nums: A list of integers
 * @return: An integer denotes the middle number of the array
 */
const median = function(nums) {
  nums.sort((v1, v2) => v1 - v2);
  return nums[Math.ceil(nums.length / 2) - 1]; // 
};
1
2
3
4
5
6
7
8

鼓励我一下:

觉得还不错的话,给我的项目点个star

Last Updated: 10/24/2018, 8:07:31 PM