LeetCode之寻找两个有序数组的中位数——JavaScrip
2019-02-08 本文已影响0人
极奏
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。示例1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0示例2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
解题思路:
- 合并
- 排序
- 得到中位数
题目有要求时间复杂度,不知道js的sort性能怎么样,先提交试一下
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number}
*/
var findMedianSortedArrays = function (nums1, nums2) {
var number = nums1.concat(nums2);
number.sort(function (a, b) { return a - b });
return number.length % 2 === 0 ? (number[number.length / 2] + number[(number.length / 2) - 1]) / 2 : number[Math.floor(number.length / 2)];
};
居然通过。
其实是按理来说是无法通过的,因为sort函数到不了O(log(m + n))的级别。
下面来了解一下js中sort函数的性能