您的位置:首页 > 编程语言 > Java开发

Median of Two Sorted Arrays (JAVA)

2014-01-01 08:31 351 查看
class Solution {
public
double findKth(int a[], int startA, int m, int b[], int startB, int n, int k)
{
if (m > n) return findKth(b, startB, n, a, startA, m, k);

if (m == 0)
return b[startB + k-1];

if (k == 1)
return min(a[startA], b[startB]);

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

if (a[startA + pa-1] < b[startB + pb-1])
return findKth(a, startA + pa, m-pa, b, startB, n, k - pa);
else
return findKth(a, startA, m, b, startB + pb, n-pb, k-pb);
}
public void test() {

}
private int min(int a, int b){
return a > b ? b : a;
}
public double findMedianSortedArrays(int A[], int B[]) {
int m = A.length;
int n = B.length;

int total = m+n;

if ((total&1) == 1)
return findKth(A, 0, m, B, 0, n, total/2+1);
else
return (findKth(A, 0, m, B, 0, n, total/2) + findKth(A, 0, m, B, 0, n, total/2+1))/2;
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: