- 寻找两个正序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?
思路:
归并排序,将两个有序数组合并成一个有序数组,然后根据数组长度奇偶性查找中位数。
//int a=5/2 ==2;
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int i=0;
int j=0;
vector<int> num;
double result;
for(;i<nums1.size()&&j<nums2.size();)
{
if(nums1[i]<=nums2[j])
{
num.push_back(nums1[i]);
++i;
}
else
{
num.push_back(nums2[j]);
++j;
}
}
while(i<nums1.size())
{
num.push_back(nums1[i]);
++i;
}
while(j<nums2.size())
{
num.push_back(nums2[j]);
++j;
}
int size=num.size();
if(size%2)
{
result=double(num[size/2]);
}
else
{
//注意先转double再除以2,而不是除于2再转double
//result=double((num[size/2]+num[size/2-1])/2);
result=double((num[size/2]+num[size/2-1]))/2;
}
return result;
}
};
进阶后续再思考