LeetCode_4_尋找兩個正序數(shù)組的中位數(shù)_JS

給定兩個大小分別為 m 和 n 的正序(從小到大)數(shù)組 nums1 和 nums2。請你找出并返回這兩個正序數(shù)組的 中位數(shù) 。

示例 1:
輸入:nums1 = [1,3], nums2 = [2]
輸出:2.00000
解釋:合并數(shù)組 = [1,2,3] ,中位數(shù) 2

示例 2:
輸入:nums1 = [1,2], nums2 = [3,4]
輸出:2.50000
解釋:合并數(shù)組 = [1,2,3,4] ,中位數(shù) (2 + 3) / 2 = 2.5

示例 3:
輸入:nums1 = [0,0], nums2 = [0,0]
輸出:0.00000

示例 4:
輸入:nums1 = [], nums2 = [1]
輸出:1.00000

示例 5:
輸入:nums1 = [2], nums2 = []
輸出:2.00000

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

思路一:

我們還是從最容易想到的方法開始。把兩個數(shù)組合并,并且按從小到大排序。如果數(shù)組長度是偶數(shù),那返回中間兩位的平均數(shù),如果數(shù)組長度是奇數(shù),那中間那一位就是中位數(shù)。

代碼實(shí)現(xiàn):

var findMedianSortedArrays = function(nums1, nums2) {
    const combinedArray = nums1.concat(nums2);
    if (combinedArray.length === 1) {
        return combinedArray[0];
    }
    combinedArray.sort((a,b) => {return a-b});
    const arrayLength = combinedArray.length;
    if (arrayLength % 2 === 0) {
        const middle = combinedArray.length / 2;
        return (combinedArray[middle-1] + combinedArray[middle]) / 2;
    }
    const middle = Math.floor(combinedArray.length / 2);
    return combinedArray[middle]

};

思路二:

其實(shí)題目已經(jīng)說明了兩個數(shù)組都是有序的,那我們按上面的解法組合再去重新排序就有點(diǎn)浪費(fèi)體力了。
今天太晚了,明天再更思路二

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容