leetcode 4 兩個排序陣列的中位數

2021-08-28 07:09:56 字數 909 閱讀 8386

給定兩個大小為 m 和 n 的有序陣列nums1nums2

請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o(log (m+n)) 。

你可以假設nums1nums2不同時為空。

示例 1:

nums1 = [1, 3]

nums2 = [2]

中位數是 2.0

示例 2:

nums1 = [1, 2]

nums2 = [3, 4]

中位數是 (2 + 3)/2 = 2.5

二分查詢nums1當中的數x,記錄小於x的數(下標就可以做),然後用x在nums2當中做二分查詢,找到小於x的個數。看看兩個陣列中小於x的數量是否剛好一半

兩次二分,複雜度是o(logn*logm)看起來高於標準答案的o(log(n+m)),但是實際**執行時間慢不了多少,原因在於很少有資料會真的到達最壞複雜度,大部分很快就能找到答案

我的解法的特殊情況極多,需要加很多分支來判斷各種情況的處理。

需要考慮l1+l2是奇數還是偶數,要用不同的方案進行處理

需要考慮陣列中有很多相同資料時該如何處理

具體可以看我**,執行時間36ms

class solution

return findmediansortedarrays(nums2,nums1);

} else

if(b==(m+n)/2)}}

}return findmediansortedarrays(nums2,nums1);

} return 0;

}};

leetcode 4 兩個排序陣列的中位數

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o log m n 示例 1 nums1 1,3 nums2 2 中位數是 2.0 示例 2 nums1 1,2 nums2 3,4 中位數是 2 3 2 2.5 思路 兩個陣...

LeetCode 4 兩個排序陣列的中位數

給定兩個大小為 m 和 n 的有序陣列nums1和nums2。請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o log m n nums1 1,3 nums2 2 中位數是 2.0 nums1 1,2 nums2 3,4 中位數是 2 3 2 2.5 本來可以歸併排序,直接求中位數,但是由...

LeetCode4 兩個排序陣列的中位數

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o log m n 示例 1 nums1 1,3 nums2 2 中位數是 2.0示例 2 nums1 1,2 nums2 3,4 中位數是 2 3 2 2.5 兩個有序陣列,...