Leetcode: Median of Two Sorted Arrays

来源:互联网 发布:怎样安装广联达软件 编辑:程序博客网 时间:2024/06/06 19:05

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) {        int total = m + n;        if (total & 1) {            return findKth(A, m, B, n, total/2 + 1);        }        else {            return (findKth(A, m, B, n, total/2) + findKth(A, m, B, n, total/2 + 1)) / 2.0;        }    }        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(k/2, m);        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];        }    }};

0 0
原创粉丝点击