日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

两个排序数组的中位数

發(fā)布時間:2024/8/26 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两个排序数组的中位数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

中英題面

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

  There are two sorted arrays?nums1?and?nums2?of size m and n respectively.

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

  Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

  示例 1:

    nums1 = [1, 3]nums2 = [2]中位數(shù)是 2.0

  Example 1:

    nums1 = [1, 3]nums2 = [2]The median is 2.0

? 示例 2:

    nums1 = [1, 2]nums2 = [3, 4]
中位數(shù)是 (2 + 3)/2 = 2.5

  Example 2:

    nums1 = [1, 2]nums2 = [3, 4]The median is (2 + 3)/2 = 2.5



算法

  將原題轉(zhuǎn)化為在兩個有序數(shù)列中查找第k小的元素。

  對于長度為m和n的兩個有序數(shù)列a和b,考慮0 < i < m和0 < j < n且i + j + 2 == k。

  若a[i] < b[j],則a[0..i]與b[j..(n – 1)]中比無所要查找的元素,將其刪去后更新k值遞歸處理。

  時間復雜度:

    O(log(M + N))

  空間復雜度:

    O(log(M + N))

? 代碼 1 class Solution: 2 def findMedianSortedArrays(self, nums1, nums2): 3 """ 4 :type nums1: List[int] 5 :type nums2: List[int] 6 :rtype: float 7 """ 8 m = len(nums1) 9 n = len(nums2) 10 s = m + n + 1 11 return (self.findKth(nums1, nums2, s // 2) + self.findKth(nums1, nums2, s - s // 2)) / 2 12 13 def findKth(self, nums1, nums2, k): 14 m = len(nums1) 15 n = len(nums2) 16 if (m < n): 17 return self.findKth(nums2, nums1, k) 18 if (not n): 19 return nums1[k - 1] 20 if (k == 1): 21 return min(nums1[0], nums2[0]) 22 mid1 = max(k * m // (m + n) - 1, 0) 23 mid2 = k - mid1 - 2 24 if (nums1[mid1] < nums2[mid2]): 25 return self.findKth(nums1[mid1 + 1 :], nums2[: mid2 + 1], k - mid1 - 1) 26 if (nums1[mid1] > nums2[mid2]): 27 return self.findKth(nums1[: mid1 + 1], nums2[mid2 + 1 :], k - mid2 - 1) 28 return nums1[mid1]

轉(zhuǎn)載于:https://www.cnblogs.com/Efve/p/9062352.html

總結(jié)

以上是生活随笔為你收集整理的两个排序数组的中位数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。