掘金团队号上线,助你 Offer 临门! 点击 查看详情
前言
第一次参加掘金打卡活动,别的不说 主要是奔着奖励来的。4.12开始为了达到14题小目标 冲冲冲!!!这是第12题。
题目描述
题目链接:寻找两个正序数组的中位数
题目描述我用截图leetcode的为主,所以题目如下图
思路分析
一看见题目我的想法是合并两个数组然后重新排序,得到一个合并后的正序数组,然后写个方法可以求得正序数组的中位数,依题长度为1直接返回 长度大于2的话分奇数/偶数
两种情况
- 奇数:返回最中间的数(下标为Math.floor(lenth/2))
- 偶数:返回最中间两位数之和的平均数(下标分别是length/2-1和length/2)
理清思路直接开撸:
虽然依照这个思路是可行的但是用时长消耗空间大。
想了一会儿,一时也没想到好的优化方法,所以去看了一下别人思路参考一下:
看见下面这个求第K小数的解法的思路真的是秒。第K
AC 代码
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number}
*/
var findMedianSortedArrays = function(nums1, nums2) {
// 先写一个非空正序数组求中位数的方法
var getMid=(arr)=>{
if(arr.length===1){
return arr[0]
}
if(arr.length%2===0){
let index=arr.length/2
return (arr[index-1]+arr[index])/2
}else{
let index=Math.floor(arr.length/2)
return arr[index]
}
}
let newArr=[...nums1,...nums2]
newArr.sort((a,b)=>{
return a-b
})
return getMid(newArr)
};
复制代码
总结
坚持就是胜利。第12题算法完成,坚持就是胜利!!!
↓↓↓
→ 算法系列链接 ←
↑↑↑
这里可以点!这里可以点!这里可以点!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END