找出两个已排序数组的中间数,还没看懂。。
class Solution {
public:
double findMedianSortedArrays(int A[], int m, int B[], int n) {
int total=m+n;
if(total%2!=0)
return find(A,m,B,n,total/2+1);
else
return ( find(A,m,B,n,total/2+1)+find(A,m,B,n,total/2) )/2;
}
double find(int A[],int m,int B[],int n,int k)
{
if(m>n)
return find(B,n,A,m,k);
if(m==0)
return B[k-1];
if(k==1)
return min(A[0],B[0]);
int pa=min(k/2,m);
int pb=k-pa;
if(A[pa-1]<B[pb-1])
return find(A+pa,m-pa,B,n,k-pa);
else
if(A[pa-1]>B[pb-1])
return find(A,m,B+pb,n-pb,k-pb);
else
return B[pb-1];
}
};