题解 | #在两个长度相等的排序数组中找到上中位数#

在两个长度相等的排序数组中找到上中位数

http://www.nowcoder.com/practice/6fbe70f3a51d44fa9395cfc49694404f

来自第三方平平台的答案

    public int findMedianinTwoSortedAray (int[] arr1, int[] arr2) {
        // write code here
        int len1 = arr1.length, len2 = arr2.length;
        int k = (len1+len2+1)/2;
        return getMid(arr1, 0, len1-1, arr2, 0, len2-1, k);
    }
    // 求出arr1和arr2中第k小的数
    int getMid(int[] arr1, int start1, int end1, int[] arr2, int start2, int end2, int k){
        int len1 = end1-start1+1, len2 = end2-start2+1;
        if (len1 > len2) return getMid(arr2, start2, end2, arr1, start1, end1, k);
        if (len1 == 0) return arr2[start2+k-1];
        if (k == 1) return Math.min(arr1[start1], arr2[start2]);

        int i = start1+Math.min(len1, k/2)-1;
        int j = start2+Math.min(len2, k/2)-1;
        if (arr1[i] > arr2[j]){
            return getMid(arr1, start1, end1, arr2, j+1, end2, k-(j-start2+1));
        }else{
            return getMid(arr1, i+1, end1, arr2, start2, end2, k-(i-start1+1));
        }
    }
全部评论

相关推荐

点赞 评论 收藏
分享
九点快去睡:这个岗位 去年暑假我都见了 现在还在找人 钱是一点没涨
点赞 评论 收藏
分享
序 朋友们,好久不见。 笔者在过去消失的五个月里被困在情绪牢笼中过的相当煎熬,一度丢失自己,觉得整个世界都是昏暗的。 庆幸的是靠着自己纯硬扛也是走出来了。表达欲再度回归,所以真的很开心还有机会能在再和大家见面。 破碎秋招 抑郁情绪的引爆点必然是秋招期间遭受的打击了,从去年九月份腾讯转正被告知失败之后就开始疯狂投递简历,每天都在经历:简历挂、一面挂、二面挂、三面挂、HR面挂,每天睁开眼就被无所适从的挫败感包围。 秋招的特点是即便流程走到最后一步也不一定会 offer,因为还需要进入大池子进行横向对比,俗称泡池子,而这一泡我的大多数面试流程到后面就没了后文,这一度让我感觉非常绝望。我深知自己学历并...
SoNiC_X:我已经工作快2年了,当时高考没考好没去到想去的学校,觉得天要塌了;校招找不到工作,觉得天要塌了;现在工作觉得看不到未来,觉得天要塌了;最近最大的感悟就是:天会一直塌,但是生活也会一直继续下去,还是要调整好自己的心态,不要因为一时的困难把自己困住,要记住完蛋的日子永远在后头
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务