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

2021-09-24 20:01:31 字數 849 閱讀 9826

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

class solution 

//傳入的引數nums1 資料一 start1 陣列一的本次比較起始位置 len1 陣列一的長度

//傳入的引數nums2 資料二 start2 陣列二的本次比較起始位置 len2 陣列二的長度

public double findkth(int nums1, int start1, int len1, int nums2, int start2, int len2, int k)

if(len1 - start1 == 0) // 表示nums1已經全部加入前k個了,第k個為nums2[k - 1];

if(k == 1)

int p1 = start1 + math.min(len1 - start1, k / 2); // p1和p2記錄當前需要比較的那個位

int p2 = start2 + k - p1 + start1;

if(nums1[p1 - 1] < nums2[p2 - 1])else if(nums1[p1 - 1] > nums2[p2 -1])else

}}

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

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