zoukankan      html  css  js  c++  java
  • 4. Median of Two Sorted Arrays

    难度:hard

    Description:

    There are two sorted arrays nums1 and nums2 of size m and n respectively.
    
    Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
    

    有两个已排好序的数组各自长度为m 和n,找到这两个数组的中位数,总体时间复杂度应当是O(log(m + n))

    Example:

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

    Solution:

     
        
    class Solution:
    
    #         """
    #         :type nums1: List[int]
    #         :type nums2: List[int]
    #         :rtype: float
    #         """
    
        def findMedianSortedArrays(self, A, B):
            def kthSmall(A, B, i1, i2, k):
                lenA, lenB = len(A), len(B)
                if i1 >= lenA: return B[k - 1]
                if i2 >= lenB: return A[k - 1]
                if k == 1: return min(A[i1], B[i2])
                if lenA - i1 > lenB - i2: return kthSmall(B, A, i2, i1, k)
                pa = min(lenA - i1, k / 2)
                pb = k - pa
                return kthSmall(A, B, i1 + pa, i2, pb) if A[i1 + pa - 1] < B[i2 + pb - 1] else kthSmall(A, B, i1, i2 + pb, pa)
    
            lenAB = len(A) + len(B)
            return kthSmall(A, B, 0, 0, lenAB / 2 + 1) if lenAB % 2 else 0.5 * (kthSmall(A, B, 0, 0, lenAB / 2)
                                                                                + kthSmall(A, B, 0, 0, lenAB / 2 + 1))
    

      

    // 取整除 - 返回商的整数部分

     

  • 相关阅读:
    algorithm 使用经验
    Overload, Override and Overwrite ( copy)
    stl sort使用经验
    list 删除制定元素
    php常用技巧
    php 日历源码
    stl smart指针
    一道华为笔试题 ,内存相关
    stl list使用。(转)
    List 使用经验
  • 原文地址:https://www.cnblogs.com/qianyuesheng/p/9074644.html
Copyright © 2011-2022 走看看