原题链接: https://leetcode.com/problems/median-of-two-sorted-arrays/
一:原题内容
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)).
二:分析理解
对于数组个数总和是偶数还是奇数,假如是偶数4和奇数5,我们要分别找到2,3和3,那么我们统一一下,找到3,把3前面的也就是2记录下来,然后判断是奇数还是偶数,进而计算。
三:AC代码
class Solution
{
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
{
double ans;
int size1=nums1.size();
int size2=nums2.size();
bool isEven=((size1+size2)%2==0)?true:false;//标记是否是偶数
int breakPoint=(size1+size2)/2+1;//结束位置
int i=0;
int j=0;
int c=0;//记录是否到达中位数的坐标
2
while(i<size1||j<size2)
{
if((i<size1&&j==size2)||(i<size1&&j<size2&&nums1[i]<=nums2[j]))
{
c++;
if(c==breakPoint)
{
if(isEven)//是偶数
{
ans+=nums1[i];
ans/=2.0;
}
else
ans=nums1[i];
break;
}
ans=nums1[i++];
}
else
{
c++;
if(c==breakPoint)
{
if(isEven)
{
ans+=nums2[j];
ans/=2.0;
}
else
ans=nums2[j];
break;
}
ans=nums2[j++];
}
}
return ans;
}
};