題目:
給定兩個大小為 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 ...