题目:
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
代码:
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int n1 = nums1.size();
int n2 = nums2.size();
if( n1 == 0 && n2 == 0)
return 0;
vector<int> sum;
int i1 = 0, i2 = 0;
while( i1 < n1 && i2 < n2)
{
if(nums1[i1] < nums2[i2])
{
sum.push_back(nums1[i1]);
i1++;
}
else
{
sum.push_back(nums2[i2]);
i2++;
}
if( i1 == n1 && i2 != n2)
{
sum.insert(sum.end(), nums2.begin()+i2, nums2.end());
}
if( i1 != n1 && i2 == n2)
{
sum.insert(sum.end(), nums1.begin()+i1, nums1.end());
}
}
if( n1 == 0 )
sum = nums2;
if( n2 == 0 )
sum = nums1;
if((n1 + n2) % 2)
{
return sum[(n1+n2)/2];
}
else
return (sum[(n1+n2)/2 - 1] + sum[(n1+n2)/2]) / 2.0;
}
};