两正序数组的中位数

115 阅读1分钟

两正序数组的中位数 给定两个大小分别为 mn 的正序(从小到大)数组 nums1nums2。请你找出并返回这两个正序数组的 中位数

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number}
 */
var findMedianSortedArrays = function (nums1, nums2) {
    const len1 = nums1.length;
    const len2 = nums2.length;
    let mainArr = null;
    let sideArr = null
    if (len1 <= len2) {
        mainArr = nums2
        sideArr = nums1
    } else {
        mainArr = nums1
        sideArr = nums2
    }
    for (let i = 0; i < sideArr.length; i++) {
        for (let j = 0; j < mainArr.length; j++) {
            if (sideArr[i] <= mainArr[0]) {
                mainArr.unshift(sideArr[i])
                break
            } else if (sideArr[i] >= mainArr[mainArr.length - 1]) {
                mainArr.push(sideArr[i])
                break
            } else if (sideArr[i] >= mainArr[j] && sideArr[i] <= mainArr[j + 1]) {
                mainArr.splice(j + 1, 0, sideArr[i])
                break
            }
        }
    }
    const len = mainArr.length
    if (/\./.test(len / 2)) {//说明是小数
        const center = Math.floor(len / 2);
        return mainArr[center]
    } else {
        const midLeft = len / 2 - 1;
        const midRight = len / 2;
        const result = mainArr[midLeft] + mainArr[midRight]
        return result / 2
    }

};