尋找兩個正序陣列的中位數

2021-10-08 06:45:18 字數 743 閱讀 1633

題目:

給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。

請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。

你可以假設 nums1 和 nums2 不會同時為空。

示例 1:

nums1 = [1, 3]

nums2 = [2]

則中位數是 2.0

思路:因為兩陣列都是正序的,利用這一點就可以合併成乙個正序陣列,最後即可求取中位數。

class

solution

else

if(j==length2)

else

if(num1[i]

<=num2[j]

) arr.

add(num1[i++])

;else arr.

add(num2[j++])

;}int mid = arr.

size()

/2;if

(arr.

size()

%2==1

)return arr.

get(mid)

;else

return

(double

)(arr.

get(mid)

+arr.

get(mid-1)

)/2;

}}

尋找兩個正序陣列的中位數

尋找兩個正序陣列的中位數 二分法根據中位數的定義,當 m n 是奇數時,中位數是兩個有序陣列中的第 m n 2 個元素,當 m n 是偶數時,中位數是兩個有序陣列中的第 m n 2 個元素和第 m n 2 1 個元素的平均值。因此,這道題可以轉化成尋找兩個有序陣列中的第 k 小的數,其中 k 為 m...

尋找兩個正序陣列的中位數

給定兩個大小為 m 和 n 的正序 從小到大 陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數 示例 1 輸入 nums1 1,3 nums2 2 輸出 2.00000 解釋 合併陣列 1,2,3 中位數 2 示例 2 輸入 nums1 1,2 nums2 3,4 輸出 2.5...

尋找兩個正序陣列的中位數

突然發現還有文章標題,前兩天忘記寫了,今天是自己搞出來的 廢話不多說,開整 示例 1 輸入 nums1 1,3 nums2 2 輸出 2.00000 解釋 合併陣列 1,2,3 中位數 2 示例 2 輸入 nums1 1,2 nums2 3,4 輸出 2.50000 解釋 合併陣列 1,2,3,4 ...