There are two sorted arrays A and B of size mand n respectively. Find the median of the two sorted arrays. The overall runtime complexity should be O(log (m+n)).
class Solution {
public:
double findMedianSortedArrays(int A[], int m, int B[], int n) {
int i=0;
int j=0;
double ans;
int * temp=new int[m+n];
if(m==0)
{
if(n%2==0) return (B[n>>1]+B[(n>>1)-1])/2.0;
else return B[n>>1];
}
if(n == 0)
{
if(m%2==0) return (A[m>>1]+A[(m>>1)-1])/2.0;
else return A[m>>1];
}
while((i+j)<=((m+n)>>1))
{
if(i<m&&j<n)
{
if(A[i]<B[j])
{
temp[i+j]=A[i];
i++;
}
else
{
temp[i+j]=B[j];
j++;
}
}
else if(i==m&&j<n)
{
temp[i+j]=B[j];
j++;
}
else if(i<m&&j==n)
{
temp[i+j]=A[i];
i++;
}
}
if((m+n)%2==0) ans=(temp[(m+n)>>1]+temp[((m+n)>>1)-1])/2.0;
else ans=temp[(m+n)>>1];
delete [] temp;
return ans;
}
};