leetcode 04 尋找兩個有序陣列的中位數

2021-09-26 09:43:45 字數 645 閱讀 5420

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