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

    4. Median of Two Sorted Arrays

    from typing import List
    class Solution:
        def findMedianSortedArrays(self, A: List[int], B: List[int]) -> float:
            m, n = len(A), len(B)
            if m > n:#A是较短的数组
                A, B, m, n = B, A, n, m
            if n == 0:
                raise ValueError
    
            imin, imax, half_len = 0, m, (m + n + 1) / 2
            while imin <= imax:
                i = int((imin + imax) / 2)#i是A的分割处
                j = int(half_len - i)#j是B的分割处
                print(i)
                print(j)
                print('='*5)
                if i < m and B[j-1] > A[i]:
                    # i is too small, must increase it
                    imin = i + 1
                elif i > 0 and A[i-1] > B[j]:
                    # i is too big, must decrease it
                    imax = i - 1
                else:
                    # i is perfect#已经确认了边界
    
                    if i == 0: max_of_left = B[j-1]#A全分在了右边
                    elif j == 0: max_of_left = A[i-1]#B全分在了右边
                    else: max_of_left = max(A[i-1], B[j-1])
    
                    if (m + n) % 2 == 1:#说明当总数是奇数时,左边多分了一个。
                        return max_of_left*1.0
    
                    if i == m: min_of_right = B[j]
                    elif j == n: min_of_right = A[i]
                    else: min_of_right = min(A[i], B[j])
    
                    return (max_of_left + min_of_right)*1.0 / 2.0
    s=Solution()
    #print(s.findMedianSortedArrays([1,2],[3,4,5,6,7,8]))#此时i=2,j=2.此时i=m
    #print(s.findMedianSortedArrays([9,10],[3,4,5]))#此时i=0
    #print(s.findMedianSortedArrays([1,2],[3,4]))#此时j=0,只有在两者长度相等且A在B左边时,才有j=0
    print(s.findMedianSortedArrays([3,4],[1,2]))#此时j=m,只有在两者长度相等且A在B右边时,才有j=m

    //这道题确实挺难的。

  • 相关阅读:
    代码:城市名称的联想下拉框。可按拼音搜索、按汉字搜索,是一种很简单的实现方式
    代码:拖拽
    插件:zTree
    代码:遍历
    学习笔记:Stage.js(又叫Cut.js)——2D canvas 开发库,游戏方面的
    前端模块化、构建工具
    二级联动下拉菜单
    thinkphp的目录结构设计经验总结
    tp 路径表示
    liunx 根目录介绍
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/11046956.html
Copyright © 2011-2022 走看看