Leetcode每日必刷题库第4题,如何寻找两个正序数组的中位数?
生活随笔
收集整理的這篇文章主要介紹了
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, 4]
則中位數是 (2 + 3)/2 = 2.5
答案:
class Solution(object):def findMedianSortedArrays(self, nums1, nums2):a, b = sorted((nums1, nums2), key=len)m, n = len(a), len(b)after = (m + n - 1) / 2lo, hi = 0, mwhile lo < hi:i = (lo + hi) / 2if after-i-1 < 0 or a[i] >= b[after-i-1]:hi = ielse:lo = i + 1i = lonextfew = sorted(a[i:i+2] + b[after-i:after-i+2])return (nextfew[0] + nextfew[1 - (m+n)%2]) / 2.0?
總結
以上是生活随笔為你收集整理的Leetcode每日必刷题库第4题,如何寻找两个正序数组的中位数?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品运营必须知道的几个概念,什么是跳出率
- 下一篇: 数据中台(一)数据资源规划与获取