Comments (1)
题解
方法一: 函数
利用sort()
排序,排序后直接取中位数
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number}
*/
var findMedianSortedArrays = function(nums1, nums2) {
let mergeArray = [...nums1,...nums2].sort((a, b) => a - b);
return medianNums(mergeArray);
};
var medianNums = function(arr){
let length = arr.length
if(length%2==0){
return (arr[length/2]+arr[length/2-1])/2
}else{
return arr[(length-1)/2]
}
}
方法二: 二分查找
来自官方的图
来自lucifer
/**
* 二分解法
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number}
*/
var findMedianSortedArrays = function(nums1, nums2) {
// make sure to do binary search for shorten array
if (nums1.length > nums2.length) {
[nums1, nums2] = [nums2, nums1]
}
const m = nums1.length
const n = nums2.length
let low = 0
let high = m
while(low <= high) {
const i = low + Math.floor((high - low) / 2)
const j = Math.floor((m + n + 1) / 2) - i
const maxLeftA = i === 0 ? -Infinity : nums1[i-1]
const minRightA = i === m ? Infinity : nums1[i]
const maxLeftB = j === 0 ? -Infinity : nums2[j-1]
const minRightB = j === n ? Infinity : nums2[j]
if (maxLeftA <= minRightB && minRightA >= maxLeftB) {
return (m + n) % 2 === 1
? Math.max(maxLeftA, maxLeftB)
: (Math.max(maxLeftA, maxLeftB) + Math.min(minRightA, minRightB)) / 2
} else if (maxLeftA > minRightB) {
high = i - 1
} else {
low = low + 1
}
}
};
from leetcode.
Related Issues (20)
- 217.存在重复元素 HOT 1
- 8.字符串转换整数 (atoi) HOT 1
- 237.删除链表中的节点 HOT 1
- 238.除自身以外数组的乘积 HOT 1
- 46.全排列 HOT 1
- 160.相交链表 HOT 1
- 61.旋转链表 HOT 1
- 2.两数相加 HOT 1
- 21.合并两个有序链表 HOT 1
- 92.反转链表 II HOT 1
- 206. 反转链表 HOT 1
- 146. LRU 缓存机制 HOT 1
- 94. 二叉树的中序遍历 HOT 1
- 235. 二叉搜索树的最近公共祖先 HOT 1
- 236. 二叉树的最近公共祖先 HOT 1
- 104. 二叉树的最大深度 HOT 1
- 111. 二叉树的最小深度 HOT 1
- 543. 二叉树的直径 HOT 1
- 124.二叉树中的最大路径和 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from leetcode.