给定两个大小为 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
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
You may assume nums1 and nums2 cannot be both empty.
Example 1:
nums1 = [1, 3] nums2 = [2] The median is 2.0
Example 2:
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
代码如下:
var findMedianSortedArrays = function(nums1, nums2) { var len1=nums1.length; var len2=nums2.length; var i=0,j=0; var nums=[]; var mid; // 合并两数组 while(i<len1 && j<len2){ if(nums1[i]<nums2[j]){ nums.push(nums1[i]); i++; }else{ nums.push(nums2[j]) j++; } } if(i==len1 && j!=len2){ for(var k=j;k<len2;k++){ nums.push(nums2[k]) } }else if(i!=len1 && j==len2){ for(var k=i;k<len1;k++){ nums.push(nums1[k]); } } // 取中值 mid=Math.floor(nums.length/2); if(nums.length%2==1){ return nums[mid] }else{ return (nums[mid] +nums[mid-1])/2; } };
出处:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/