首页 > 技术交流 > 拼多多 pdd 0725 笔试

拼多多 pdd 0725 笔试

头像
牛客287672261号 #拼多多笔试#
发布于 2021-07-25 21:19:36 APP内打开
赞 2 | 收藏 4 | 回复5 | 浏览6788
第一题
def run(lines):
    lines = [tuple(line) for line in lines]
    lines_f = sorted(lines, key=lambda x: x[0])
    lines_e = sorted(lines, key=lambda x: x[1])
    dic_f, dic_e = {},{}
    for line in lines:
        dic_f[line] = lines_f.index(line)
        dic_e[line] = lines_e.index(line)
        
    
    for i,line in enumerate(lines_f):
        ei = dic_e[line]
        for j in range(i):
            lj = lines_f[j]
            if lj[0] == line[0]&nbs***bsp;lj[1] == line[1]:
                return True
            
            if ei < dic_e[lj]:
                return True
    return False
        
run(lines)  
第二题
def run(lines):
    j,d = lines[0], lines[1]
    ji, di = 0, 0
    jc, dc = 0, 0
    ta = []
    while len(j) != ji&nbs***bsp;len(d) != di:
        fj,fd = True,True
        while fj and len(j) != ji:

            c = j[ji]
            ji += 1
            ci = -1
            try:
                ci = ta.index(c)
            except:
                pass
            if ci != -1:
                jc += len(ta) - ci + 1
                ta = ta[0:ci]
            else:
                ta.append(c)
                fj = False
          
        while fd and len(d) != di:
            c = d[di]
            di += 1
            ci = -1
            try:
                ci = ta.index(c)
            except:
                pass
            if ci != -1:
                dc += len(ta) - ci + 1
                ta = ta[0:ci]
            else:
                ta.append(c)
                fd = False
    for c in ta:
        if c % 2 == 0:
            dc += 1
        else:
            jc += 1
    return jc, dc
        
lines = [[1,2,3,4,10,5],[5,6,7,8,2]]
arr = run(lines)
print(arr[0], arr[1])

第三题
def run(line):
    a,b,c,q = line
    if b == 1:
        return 1
    if c == 1:
        if (q - a) % b == 0:
            return 1
    ar = set()
    ar.add(a)
    if q == a:
        return 1
    while True:
        nar = set()
        for i in ar:
            nar.add(i+b)
            nar.add(i*c)
        if q in nar:
            return 1
        if min(nar) > q:
            return 0
        ar = nar
        
    

print(run([2,3,2,10]))


第四题
def run(arr,mn):
    narr = []
    for i,n in enumerate(arr):
        for _ in range(n):
            narr.append(i)
    return select(narr, 0, [],[],mn)
    
        
def select(arr, i, r,l,mn):
    if i == len(arr):
        ra,la = [],[]
        build(r,[],ra)
        build(l,[],la)
        for nr in ra:
            for nl in la:
                mn = max(mn, nr*nl)
        
        return mn
        
    n = arr[i]
    
    r.append(n)
    mn = select(arr, i+1, r,l, mn)
    
    r.remove(n)
    l.append(n)
    mn = select(arr, i+1, r,l, mn)
    l.remove(n)
    return mn

            
def build(arr, r,all_arr):
    if 0 == len(arr):
        if len(r) != 0 and r[0] != '0':
            all_arr.append(int(''.join(r)))
        return
        
    for n in arr:
        narr = arr[:]
        narr.remove(n)
        r.append(str(n))
        build(narr,r,all_arr)
        r.remove(str(n))
        
run([0,4,0,0,0,0,0,0,0],0) 


5条回帖

回帖
加载中...
话题 回帖

推荐话题

相关热帖

技术交流近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐