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:
int getTheK(int *A, int m, int *B, int n, int k){
if(m == 0)return B[k-1];
if(n == 0)return A[k-1];
int i = m>>1, j = n>>1, *p, *q, t;
if(A[i] <= B[j])p = A, q = B;
else p = B, q = A, swap(i, j), swap(m, n);
t = i + j + 1;
if(t >= k)return getTheK(p, m, q, j, k);
else if(t < k)return getTheK(p+i+1, m-i-1, q, n, k-i-1);
}
double findMedianSortedArrays(int A[], int m, int B[], int n) {
int k = m + n;
double res = 0.0 + getTheK(A, m, B, n, k/2+1);
if(k % 2 == 0)res = (res + getTheK(A, m, B, n, k/2))/2;
return res;
}
};