尋找有序陣列中位數

2021-10-03 10:34:50 字數 752 閱讀 9012

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

既然是有序陣列又有解題時間複雜度的限制,第乙個想到就是2分法,我上次就說過的每次比較兩組數的k/2的數(k為中位數所在位置),直到派出到我們想要的中位數。

2但既然這樣我們也可以設定兩個標誌,乙個m在較長陣列的位置,乙個n在另一陣列的初始位置,比較這兩個數的大小,如果mdef median(a, b):

m, n = len(a), len(b)

if m > n:

a, b, m, n = b, a, n, m

if n == 0:

raise valueerror

half_len = (m + n +1) / 2

m=a[half_len]

n=b[0]

while m>n

n=n+1,m=m+1

if (m + n) % 2 == 1

return m

else

return (m+n)/2

LeetCode 尋找兩有序陣列中位數

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

尋找2個有序陣列的中位數

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

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

尋找兩個有序陣列的中位數 user hihone date 2019 1 31 time 16 32 description 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 ...