一起来刷leetcode(4)——寻找两个正序数组的中位数

271 阅读1分钟

猜猜我有几颗糖?

猜对了两颗都给你

前言

三个人在学校门口接孩子
开车的说:“孩子现在也接不起了,住的远,一天油钱也得十多块,费油哎。”
骑电动车的说:“谁说不是呢,我这一个月电费也得二三十块,费电哎。”
骑自行车的说:“我这不费油,不费电的,天天还可以锻炼身体,不过啊,也花钱,天天吃的多,费饭哎。”

哎,我这天天放牛的,费牛哎
家家都有一本难念的经啊
能用钱解决的事都不是事儿
关键是咱啥都不缺,就缺钱哎 ╯▽╰

1 思路分析

nums1 = [1,3], nums2 = [2,4]
输出: 2.5

1.1 基本步骤

  1. 合并数组
  2. 排序
  3. 寻找中位数

1.2 重点步骤

寻找中位数

3.1 奇数

  • a[n-1]
  • (a[Math.floor(n)] + a[n-1]) / 2

3.2 偶数

  • (a[n] + a[n-2]) / 2
  • (a[n] + a[Math.floor(n-1)]) / 2

2 代码片段

/**
 * @param {array} nums1
 * @param {array} nums2
 * @return {number}
 */
var findMedianSortedArrays = function (nums1, nums2) {
  const arr = [...nums1, ...nums2]
  const sortArr = arr.sort((a, b) => a - b)
  const left = arr[Math.floor((sortArr.length - 1) / 2)]
  const right = arr[Math.floor((sortArr.length) / 2)]
  return  (left + right) / 2
}

3 技巧总结

middle

// 奇数
const a = [1,2,3]
const middle = a[(a.length-1)/2]

// 偶数
const a = [1,2,3,4]
const middle = (a[a.length/2] + a[(a.length-2)/2]) / 2

// 奇偶
const middle = a => (
  a[Math.floor(a.length/2)] + a[Math.floor((a.length-1)/2)) / 2


4 精选评论

  • 生不出人,我很抱歉
  • 奈何老夫没文化,一句卧槽走天下
  • 为什么我的眼里常含泪水,因为我对知识一无所知

你全力做到的最好


还不如别人随便搞搞

参考链接

往期回顾