力扣 題目4 尋找兩個有序陣列的中位數

2021-09-25 15:21:29 字數 786 閱讀 4287

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

#include #include using namespace std;

#define max(a,b) (((a) > (b)) ? (a) : (b))

#define min(a,b) (((a) < (b)) ? (a) : (b))

class solution

// ci 為第i個陣列的割,比如c1為2時表示第1個陣列只有2個元素。lmaxi為第i個陣列割後的左元素。rmini為第i個陣列割後的右元素。

int lmax1, lmax2, rmin1, rmin2, c1, c2, lo = 0, hi = 2 * n; //我們目前是虛擬加了'#'所以陣列1是2*n長度

while (lo <= hi) //二分

return (max(lmax1, lmax2) + min(rmin1, rmin2)) / 2.0;

}};

力扣 尋找兩個有序陣列的中位數 C

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。nums1 1,3 nums2 2 則中位數是 2.0 nums1 1,2 nums2 3,4 ...

力扣題解 合併兩個有序陣列

題目 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示...

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

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...