您的位置:首页 > 其它

LeetCode-Median of Two Sorted Arrays

2014-08-19 14:55 246 查看
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)).

Solution:

Code:

<span style="font-size:14px;">class Solution {
public:
double findK (int A[], int m, int B[], int n, int k) {
if (m == 0) return B[k-1];
if (n == 0) return A[k-1];
if (k == 1) return min(A[0], B[0]);
if (m > n) return findK(B, n, A, m, k);
int kA = min(m, k/2);
int kB = k-kA;
if (A[kA-1] == B[kB-1]) return A[kA-1];
else if (A[kA-1] < B[kB-1]) return findK(A+kA, m-kA, B, n, k-kA);
else return findK(A, m, B+kB, n-kB, k-kB);

}

double findMedianSortedArrays(int A[], int m, int B[], int n) {
if ((m+n)%2) return findK(A, m, B, n, (m+n)/2+1);
else return (findK(A, m, B, n, (m+n)/2)+findK(A, m, B, n, (m+n)/2+1))/2;
}
};</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息