给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。
请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。
示例 1:
nums1 = [1, 3]
nums2 = [2]
中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
中位数是 (2 + 3)/2 = 2.5
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
{
int allnums = nums1.size() + nums2.size();
int pos = allnums / ;
int count = ;
int p1 = , p2 = ;
vector<int> save; if (nums1.size() == && nums2.size() == ) return ; while (count <= pos)
{
if ((p1+)>nums1.size())
{
save.push_back(nums2[p2]);
p2++;
count++;
continue;
} if ((p2+)>nums2.size())
{
save.push_back(nums1[p1]);
p1++;
count++;
continue;
} if (nums1[p1] >= nums2[p2])
{
save.push_back(nums2[p2]);
p2++;
count++;
}
else
{
save.push_back(nums1[p1]);
p1++;
count++;
} } if (allnums % == ) return save[save.size() - ];
else return (save[save.size() - ] + save[save.size() - ]) / (2.0);
}
};