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

2021-09-07 14:49:59 字數 946 閱讀 8606

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