滴滴 8.21 笔试 AK代码

滴滴8.21笔试算法部分的代码,仅供参与考试的同学参考。

1.
n=int(input())
a=[]
for _ in range(2):
    a.append(list(input().split()))
res1,res2=None,None
pre1=set()
hou1=set()
pre2=set()
hou2=set()
flag=0
idx1=None
idx2=None
for i in range(len(a[0])):
    if a[0][i]=='X':
        flag=1
        idx1=i
        continue
    if flag==0:
        pre1.add(a[0][i])
    else:
        hou1.add(a[0][i])
flag=0
for i in range(len(a[1])):
    if a[1][i]=='X':
        flag=1
        idx2=i
        continue
    if flag==0:
        pre2.add(a[1][i])
    else:
        hou2.add(a[1][i])
#print(pre1,hou1,pre2,hou2,idx1,idx2)
res1=min(idx1,idx2)+1
res2=max(idx1,idx2)+1
#print(res1,res2)
if idx1>idx2:
    count=0
    for x in pre2:
        if x in hou1:
            count+=1
    res1-=count
    c=0
    for x in hou1:
        if x in pre2:
            c+=1
    res2+=c
elif idx1<idx2:
    count=0
    for x in pre1:
        if x in hou2:
            count+=1
    res1-=count
    c=0
    for x in hou2:
        if x in pre1:
            c+=1
    res2+=c
else:
    count1=0
    for x in pre2:
        if x in hou1:
            count1+=1
    count2=0
    for x in pre2:
        if x in hou1:
            count2+=1
    res1=res1-max(count1,count2)
    c1=0
    for x in hou1:
        if x in pre2:
            c1+=1
    c2=0
    for x in hou1:
        if x in pre2:
            c2+=1
    res2+=max(c1,c2)
print(res1,res2)



2.
n=int(input())
res=[[0]*n for _ in range(n)]
a=[]
cache={}
def fib(n):
    if n in cache:
        return cache[n]
    if n==0&nbs***bsp;n==1:
        return 1
    res=fib(n-1)+fib(n-2)
    cache[n]=res
    return res
for i in range(n*n):
    a.append(fib(i))
a=a[::-1]
i,j,count,f=0,0,0,0
vis=[[0]*n for _ in range(n)]
nextt=[(0,1),(1,0),(0,-1),(-1,0)]
def isin(i,j):
    return i>=0 and i<n and j>=0 and j<n
while count<n*n:
    if count==n*n-1:
        res[i][j]=a[count]
        break
    vis[i][j]=1
    res[i][j]=a[count]
    ni=i+nextt[f][0]
    nj=j+nextt[f][1]
    if not isin(ni,nj)&nbs***bsp;vis[ni][nj]==1:
        f=(f+1)%4
        continue
    i=ni
    j=nj
    count+=1
for x in res:
    s=''
    for y in x:
        s=s+str(y)+' '
    print(s[:-1])


#笔试题目#
全部评论

相关推荐

11-12 15:08
已编辑
长江大学 算法工程师
3年前的秋招季,原来只是一个新手教程罢了。2个月之前,我,一个9本华五硕,手上一个Offer都没有。从来没想到会遇到这样的场面,大环境退化了,自己的价值也没有在这段经历中有所提升。实验室里同届的人也都至少面的很顺,有个保底,而我还在挣扎求生。但结果只是惨淡,算不上完败:上周五我收到了小红书的oc,同时最近也接到了华为的保温电话,这标志着互联网公司的沟通基本都有了个结果。是时候该回顾一下过去的心得了,我想以一位网友给我的一份回复,一个教训作为切入点。一个教训也就在秋招最困难的这段时间,我发帖吐槽了一位让我感觉不舒服的面试官,于是受到了一位“工作两年多的网友”的教训。虽然他已经删除这段话,但我很在...
牛客73841773号:怀着复杂的心情读了好几遍,丝毫没感受到作者“读书人的傲慢”,反而,透过这段逻辑清晰、有理有据的文字,我感受到了一种读书人特有的温厚的力量,这显然是名校熏陶和个人修养综合作用的结果。这种力量,让我想起过去一百多年里许多名校学子所展现出的,自强不息的进取精神,通透达观的处世心态,悲智双运的人文关怀。这位作者,你清醒的智慧、清晰的远见、不卑不亢的态度和公正的自我认知,一定会让你在不久的将来作出正确的选择,过上幸福的人生。
点赞 评论 收藏
分享
北冥有鱼吗:工作忙,现在没工作了哈哈哈
点赞 评论 收藏
分享
10-28 15:45
门头沟学院 C++
西南山:海康威视之前不是大规模裁员吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务