給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數。
高階:你能設計乙個時間複雜度為 o(log (m+n)) 的演算法解決此問題嗎?
示例 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] ,中位數 (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
2023年10月25日
/*
* 因為兩個陣列都是有序的,尋找的是兩個陣列的中位數,因此我們每個陣列只需要找一半就可以了
* 用雙指標,通過迴圈將兩個陣列進行比較,較小的數給r,一直更新r和l,
* 當兩個陣列的和長度為奇數,就返回r,若為偶數,則返回r上一次更新的數,即l和r和的二分之一即可
*/public
double
findmediansortedarrays
(int
nums1,
int[
] nums2)
else}if
((m + n)%2
==0)return r;
}
這裡貼一下高階問題的解答(跪拜力扣大佬們),思路和邏輯不是一般的清晰
public
double
findmediansortedarrays
(int
nums1,
int[
] nums2)
private
intgetk
(int
nums1,
int start1,
int end1,
int[
] nums2,
int start2,
int end2,
int k)
else
}
力扣 尋找兩個正序陣列的中位數
給定兩個大小為 m 和 n 的正序 從小到大 陣列 nums1 和 nums2。請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1 3 nums2 2 則中位數是 2.0 示例 2 nums...
力扣第4題尋找兩個有序陣列的中位數個人題解
題目 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1...
力扣演算法篇 尋找兩個正序陣列的中位數
尋找兩個正序陣列的中位數 給定兩個大小分別為m和n的正序 從小到大 陣列nums1和nums2。請你找出並返回這兩個正序陣列的中位數。例項 題解 遍歷兩個陣列 得到有序的合併陣列並找到中位數 class solution vector int combine int i 0 int j 0 whil...