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

2022-09-07 18:33:17 字數 1158 閱讀 5973

文章目錄:

題目:

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

指令碼一及注釋:【116ms】

class

solution:                                          #leetcode固定格式

def findmediansortedarrays(self, nums1: list[int], nums2: list[int]) ->float:  #leetcode固定格式

len1 =len(nums1)             #獲取第乙個列表的長度             

len2 =len(nums2)             #獲取第二個列表的長度

nums3 = nums1 +nums2           #合併兩個列表

nums3.sort()                #將合併後的列表進行公升序排序

num = (len1 + len2)%2           #將兩列表長度取和後除以2取餘數,用於判斷合併列表的元素個數是單數還是雙數num1 = int((len1 + len2) / 2) #求合併列表的個數的中間數,並取整數

if(num ==0):                #如果餘數為0,合併列表元素個數為偶數,進入相應的語句取中間數

return((nums3[num1]+nums3[num1-1])/2)

else

:                     #如果合併列表為奇數,則直接獲取相應的中間數即可     

return(nums3[num1])

指令碼一邏輯:

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

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

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

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

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

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