給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。
請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。
你可以假設 nums1 和 nums2 不會同時為空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
則中位數是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
則中位數是 (2 + 3)/2 = 2.5
思路:將兩個vector合併成乙個,然後排序,如果合併後的vector的長度是奇數的話,那麼答案就是中間的那個,否則,則是中間的兩個相加除於二(記得轉換成double型)
**:
class solution
sort(nums1.begin(), nums1.end());
if(nums1.size() % 2 == 1)
return nums1[nums1.size() / 2];
else
return 1.0 * (nums1[nums1.size() / 2] + nums1[nums1.size() / 2 - 1]) / 2;
}};
leetcode04 尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...
LeetCode 04尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設nums1和nums2不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0示例 2 nums1 1,2 nums2...
Leetcode 04 尋找兩個有序陣列的中位數
令人頭禿的困難題 僅寫我的部分理解,詳見學習題解鏈結。1 變數解釋lmax 切割點左側最大元素 rmin 切割點右側最小元素 cut 中位數的切割點 eg 1,2,3 lmax rmin 2 1,2 lmax 1 rmin 2 2 中位數中位數切點滿足的條件有 lmax1 rmin2 lmax2 r...