zoukankan      html  css  js  c++  java
  • leetcode python 004

    ##  已知l1,l2均为升序数组,
    ##  在两数组l1,l2中寻找第n位数,
    ##  两数组中位数中,前者大于后者,说明后者中位数以下的成员必定在真正中位数之下
    ##  可以将其剔除,剔除a个元素后的两数组中寻找第n-a位数,等价于
    def findmid(l1,l2):
        m,n=len(l1),len(l2)
        if (m+n)%2==0:
            return  (listrec(l1,l2,(m+n)/2)+listrec(l1,l2,(m+n)/2))/2
        else:
            return listrec(l1,l2,(m+n+1)/2)
    ## la长度大于等于lb
    def listrec(la,lb,i):
        m,n=len(la),len(lb)
        if n==0:
            return la[i-1]
        if m<n:
            return listrec(lb,la,i)
        if i==1:
            return min(la[0],lb[0])
        p=min(int(i/2),n)
        print(m,n,i,p)
        if la[p-1]>lb[-1]:
            return listrec(la,lb[p:],i-p)
        else:
            return listrec(la[p:],lb,i-p)

    lm=[x for x in range(13,200)if x%2==0]
    ln=[x for x in range(15,99)if x%2==1]
    print(findmid(lm,ln))

    ----蚂蚁不在线
  • 相关阅读:
    selenium获取Cookie操作
    分布式锁-常用技术方案
    合成模式(Composite)-结构型
    享元模式-结构型
    桥接模式-结构型
    适配器模式-结构型
    建造者模式-创建型
    单例和原型模式-创建型
    外观(门面)模式-结构型
    JDK QUEUE队列
  • 原文地址:https://www.cnblogs.com/offline-ant/p/9365910.html
Copyright © 2011-2022 走看看