給定兩個大小為 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
(object):
deffindmediansortedarrays
(self, nums1, nums2)
:"""
:type nums1: list[int]
:type nums2: list[int]
:rtype: float
"""nums3 = nums1 + nums2
nums3.sort(
) len_nums =
len(nums3)
if len_nums %2==
0:return
((nums3[len_nums/2]
+ nums3[len_nums/2-
1])/
2)else
:return
(nums3[
int(len_nums/2)
])
LeetCode 尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...
二 Leetcode演算法尋找兩個有序陣列的中位數
1 題目 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。nums1 1,3 nums2 2 則中位數是 2.0 nums1 1,2 nums2...
LeetCode 尋找兩個有序陣列的中位數
題目時間複雜度要求不高於o log m n m,n分別是兩個陣列的長度。對數級的時間複雜度就應該用二分查詢來做了。整體思路就是 先分別找到兩個陣列的中位數a,b,如果ab,說明整體中位數字於a的前半段或b的後半段。不斷這樣二分下去即可。其實,這道題可以轉換為尋找有序陣列中的第k個數,對應於中位數的話...