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
求两个有序的数列合并后的中位数,通过案例可以看出,如果合并后的数组元素个数是奇数,那么中位数的下标应该是N/2;如果是偶数,那么中位数应该是 (n/2-1 + n/2) / 2;
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
nums1.insert(nums1.end(),nums2.begin(),nums2.end());
sort(nums1.begin(),nums1.end());
int n = nums1.size();
if (n % 2 == 1)
{
n = n / 2;
return nums1[n];
}
else
{
n = n / 2;
return (nums1[n-1] + nums1[n]) / 2.0;
}
}
或者 采用归并排序的方法将两个vector进行合并;因此给定的2个数组已经有序了,所以直接归并即可。