給定兩個大小為 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
通過兩個list相加,可以直接組成乙個list,然後利用列表.sort()函式進行排序,最後根據列表大小分兩種情況求解中位數。
class solution:
def findmediansortedarrays(self, nums1, nums2):
""":type nums1: list[int]
:type nums2: list[int]
:rtype: float
"""nums3 = nums1+nums2
nums3.sort()
if (len(nums3) % 2 == 0):
medium = (nums3[int(len(nums3)/2)]+nums3[int(len(nums3)/2-1)])/2
else:
medium = nums3[int(len(nums3)/2)]
return medium
在if語句中,第一次將**寫成了下面這樣,出現報錯,原因是:雖然進入if語句,說明list長度是偶數,可以被2整除,但在進行下標索引時,必須轉化為整數,即使能被整除也得轉化。
medium = (nums3[len(nums3)/2]+nums3[len(nums3)/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 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,...
LeetCode 4 尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...