您的位置:首页 > 其它

leetcode Median of Two Sorted Arrays

2013-11-10 16:05 309 查看
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)).

The method of finding the kth number is easier than http://leetcode.com/2011/03/median-of-two-sorted-arrays.html .

Take notice of A[pa - 1] instead of A[pa] because pa >= 1

class Solution {
 public:
  double findKth(int A[], int m, int B[], int n, int k) {
    if (m > n)
      return findKth(B, n, A, m, k);
    if (m == 0)
      return B[k-1];
    if (k == 1)
      return min(A[0], B[0]);
    int pa = min(m, k/2);
    int pb = k - pa;
    if (A[pa - 1] < B[pb - 1])
      return findKth(A + pa, m - pa, B, n , k - pa);
    else if (A[pa - 1] > B[pb - 1])
      return findKth(A, m, B + pb, n - pb, k - pb);
    else
      return A[pa - 1];
  }
  double findMedianSortedArrays(int A[], int m, int B[], int n) {
    int total = m + n;
    if (total % 2 == 0)
      return (findKth(A, m, B, n, total/2) + findKth(A, m, B, n, total/2 + 1))/2;
    else
      return findKth(A, m, B, n, total/2 + 1);
  }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: