給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。
請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。
你可以假設 nums1 和 nums2 不會同時為空。
示例 1:
nums1 = [1, 3]則中位數是 2.0nums2 = [2]
示例 2:
nums1 = [1, 2]則中位數是 (2 + 3)/2 = 2.5nums2 = [3, 4]
因為兩個陣列是有序的,所以可以先將兩個陣列合併成乙個陣列,再計算中位數。與『合併兩個有序的鍊錶』類似,不過這題還要返回合併後的陣列的中位數。
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,...