您的位置:首页 > 其它

[leetcode] Median of Two Sorted Arrays

2013-08-16 22:32 495 查看
There are two sorted arrays A and B 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)).

class Solution {
public:
double findMedianSortedArrays(int A[], int m, int B[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
double midA,midB;
midA=FindKth(A,0,m,B,0,n,(m+n)/2+1);
if((m+n)%2==0)
midB=FindKth(A,0,m,B,0,n,(m+n)/2);
else
midB=midA;
return (midA+midB)/2;
}
int FindKth(int A[], int aoffset,int m , int B[], int boffset, int n, int k){
if(m>n)
return FindKth(B,boffset,n,A,aoffset,m,k);//巧妙的解决一个选择最长的那个数组的问题
if(m==0) return B[k-1];
if(k==1) return min(A[aoffset],B[boffset]);

int pa=min(k/2,m);
int pb=k-pa;

if(A[pa+aoffset-1]<B[pb+boffset-1])
return FindKth(A,aoffset+pa,m-pa,B,boffset,n,k-pa);
return FindKth(A,aoffset,m,B,boffset+pb,n-pb,k-pb);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: