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)).
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.5AC代码如下:
class Solution {
public://将两个有序数组合并为一个有序数组,再求其中值 时间复杂度O(n),空间复杂度O(n)
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> sum;
int i=0,j=0;
for(;i<nums1.size()&&j<nums2.size();){
if(nums1[i]<nums2[j])
sum.push_back(nums1[i++]);
else
sum.push_back(nums2[j++]);
}
for(;i<nums1.size();++i)
sum.push_back(nums1[i]);
for(;j<nums2.size();++j)
sum.push_back(nums2[j]);
int length=nums1.size()+nums2.size();
if(length&1)
return (double)sum[length/2];
else
return (sum[length/2-1]+sum[length/2])/2.0;
}
};