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

2021-10-03 15:13:42 字數 1199 閱讀 7281

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

:def

findmediansortedarrays

(self, nums1: list[

int]

, nums2: list[

int])-

>

float

: m, n =

len(nums1)

,len

(nums2)

if m ==

0and n ==0:

return

0 stack =

left1, left2 =0,

0while left1 < m and left2 < n:

if nums1[left1]

<= nums2[left2]:)

left1 +=

1else:)

left2 +=

1if left1 == m:

stack += nums2[left2:

]elif left2 == n:

stack += nums1[left1:

] s =

len(stack)

if s %2==

1:return stack[s //2]

else

:return

(stack[s//2]

+ stack[s//2-

1])/

2

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

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

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

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

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

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