美文网首页
Median of Two Sorted Arrays

Median of Two Sorted Arrays

作者: 斯特莫 | 来源:发表于2018-05-21 20:09 被阅读0次

转化成寻找第k个最小值

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number}
 */
var findMedianSortedArrays = function(nums1, nums2) {
    let total = nums1.length + nums2.length;
    if(total%2==0){
        return (findKth(nums1, 0, nums2, 0, total/2) + findKth(nums1, 0, nums2, 0, total/2 + 1))/2
    }else{
        return findKth(nums1, 0, nums2, 0, (total+1)/2)
    }
    
};
function findKth(a, m, b, n, k){
    if(m > a.length - 1){
        return b[n+k-1]
    }
    if(n > b.length - 1){
        return a[m+k-1]
    }
    if(k==1){
        return Math.min(a[m], b[n])
    }
//如果k/2超过了其中一个array, 那第k个最小值一定不再另一个array的前k/2
    let pa = parseInt(k/2) + m <= a.length ? a[parseInt(k/2) + m-1]:Number.MAX_VALUE;
    let pb = parseInt(k/2) + n <= b.length ? b[parseInt(k/2) + n-1]:Number.MAX_VALUE;
    if(pa>pb){
        return findKth(a, m, b, n+parseInt(k/2), k-parseInt(k/2))
    } else {
        return findKth(a, m+parseInt(k/2), b, n, k-parseInt(k/2))
    }
}

相关文章

网友评论

      本文标题:Median of Two Sorted Arrays

      本文链接:https://www.haomeiwen.com/subject/odwqjftx.html