两个排好序的数组找中位数,要求O(log (m+n))

leetcode上的题目,第三题,看不太懂解答

class Solution {
public:
    int getkth(int s[], int m, int l[], int n, int k){
        // let m <= n
        if (m > n) 
            return getkth(l, n, s, m, k);
        if (m == 0)
            return l[k - 1];
        if (k == 1)
            return min(s[0], l[0]);
        int i = min(m, k / 2), j = min(n, k / 2);
        if (s[i - 1] > l[j - 1])
            return getkth(s, m, l + j, n - j, k - j);
        else
            return getkth(s + i, m - i, l, n, k - i);
        return 0;
    }
    double findMedianSortedArrays(int A[], int m, int B[], int n) {
        int l = (m + n + 1) >> 1;
        int r = (m + n + 2) >> 1;
        return (getkth(A, m ,B, n, l) + getkth(A, m, B, n, r)) / 2.0;
    }
};
被拉入了个群~跟我一样小菜鸟可以一起讨论,大神不介意。。也可以进
图片标题
全部评论
如果觉得自己还比较菜就先别看这种题…
点赞 回复 分享
发布于 2017-04-23 14:48
二分啊,简答题。
点赞 回复 分享
发布于 2017-04-23 14:56
http://www.cnblogs.com/yuzhangcmu/p/4138184.html  可以参考下
点赞 回复 分享
发布于 2017-04-23 16:37
啊。。。有这么简单么
点赞 回复 分享
发布于 2017-04-23 16:45

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务