給定兩個(gè)大小分別為 m 和 n 的正序(從小到大)數(shù)組 nums1 和 nums2近哟。請(qǐng)你找出并返回這兩個(gè)正序數(shù)組的 中位數(shù) 。
示例 1:
輸入:nums1 = [1,3], nums2 = [2]
輸出:2.00000
解釋?zhuān)汉喜?shù)組 = [1,2,3] 异赫,中位數(shù) 2
示例 2:
輸入:nums1 = [1,2], nums2 = [3,4]
輸出:2.50000
解釋?zhuān)汉喜?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
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有头岔。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處鼠证。
思路一:
我們還是從最容易想到的方法開(kāi)始峡竣。把兩個(gè)數(shù)組合并,并且按從小到大排序量九。如果數(shù)組長(zhǎng)度是偶數(shù)适掰,那返回中間兩位的平均數(shù),如果數(shù)組長(zhǎng)度是奇數(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)說(shuō)明了兩個(gè)數(shù)組都是有序的,那我們按上面的解法組合再去重新排序就有點(diǎn)浪費(fèi)體力了肌似。
今天太晚了费就,明天再更思路二