兩個(gè)排序數(shù)組的中位數(shù)

兩個(gè)排序數(shù)組的中位數(shù)

給定兩個(gè)大小為 m 和 n 的有序數(shù)組nums1?nums2?。

請(qǐng)找出這兩個(gè)有序數(shù)組的中位數(shù)。要求算法的時(shí)間復(fù)雜度為?O(log (m+n)) 。

示例 1:

nums1 = [1, 3]

nums2 = [2]

中位數(shù)是 2.0

示例 2:

nums1 = [1, 2]

nums2 = [3, 4]

中位數(shù)是 (2 + 3)/2 = 2.5

class Solution:

? ? def findMedianSortedArrays(self, nums1, nums2):

? ? ? ? """

? ? ? ? :type nums1: List[int]

? ? ? ? :type nums2: List[int]

? ? ? ? :rtype: float

? ? ? ? """

? ? ? ? nums1_len = len(nums1)

? ? ? ? nums2_len = len(nums2)

? ? ? ? if nums1_len==0:

? ? ? ? ? ? if nums2_len==0:

? ? ? ? ? ? ? ? return

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? return (nums2[~nums2_len//2]+nums2[nums2_len//2])/2

? ? ? ? if nums2_len==0:

? ? ? ? ? ? if nums1_len==0:

? ? ? ? ? ? ? ? return

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? return (nums1[~nums1_len//2]+nums1[nums1_len//2])/2

? ? ? ? su = 0

? ? ? ? result=[]

? ? ? ? while len(nums1) and len(nums2):

????????????if nums1[0]<nums2[0]:

????????????????result.append(nums1.pop(0))

????????????else:

????????????????result.append(nums2.pop(0))

????????if len(nums1):

????????????result+=nums1

????????elif len(nums2):

????????????result+=nums2

????????return (result[(nums1_len+nums2_len)//2]+result[~(nums1_len+nums2_len)//2])/2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容