拼多多 pdd 0725 笔试

第一题
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) 


#拼多多笔试##拼多多##笔试题目#
全部评论
第四题的思路可以说一下嘛
1 回复 分享
发布于 2021-07-25 21:36
前2题简单不说了,第三题改来改去得分变成0%被搞的心态爆炸,最后第四题差1分钟没写完。。。现在补上我的答案,欢迎大家吐槽
点赞 回复 分享
发布于 2021-07-25 21:25
你这第三题暴力解过不了的,要用数学办法
点赞 回复 分享
发布于 2021-07-25 21:26
第四题能过多少
点赞 回复 分享
发布于 2021-07-25 21:49
美团在职学长送内推福利 内推优势:免简历筛选,直通笔试,全流程跟踪,提供答疑咨询 内推途径 一、移动端https://campus.meituan.com/bole/wechat?staffSsoId=5430873&appKey=hiring-campus-portal投递简历 二、PC端美团官网投递:https://campus.meituan.com/ 内推码:pVDJhsq(实习和校招同一个内推码) 注意内推码前后不要有空格 面向人群:2022届海内外院校应届毕业生(在2021年11月-2022年10月期间毕业) 投递时间:即日起至2021年10月14日24:00(北京时间)建议大家早投递,越往后HC越少 岗位:技术类、零售类、产品类、运营类、设计类、市场职能类、销售相关类 base:北京、上海、成都、深圳、厦门、广州、武汉、扬州、石家庄等 欢迎大家加入QQ群:540965327 有任何问题可以在群里交流
点赞 回复 分享
发布于 2021-08-05 14:50

相关推荐

点赞 评论 收藏
分享
评论
2
4
分享
牛客网
牛客企业服务