携程0329开发笔试题解

投票
T1 计算圆圈个数 直接计数即可
T2 排列构造,需要K个好元素。只需要选择0, 2, 4,..., 2*(k-1)下标的地方依次填入n-k+1, n-k+2, ... ,n,也就是倒数k大的数,剩下的地方把剩下的地方填写即可
T3 x的阶乘范围决定了x不会超过15,枚举x,然后y取n/x和(n/x)+1计算哪个绝对值小即可。注意x和y不能取2,但可能取1。提交时感觉有个样例bug,x取1时按理说y直接消了取多少都可以,但是取n不通过,取1就通过了。
T4 树形DP,直接DFS,计算孩子允许染色和不允许染色的情况,返回两个状态:一个是不允许自己和孩子之间染色,一个是允许,两种情况下的权值。核心参考代码如下:    
def dfs(node):
    draw, nodraw, drawed = [], [], [] # 存储孩子状态
    for nei, W in G[node]:
       if not flag[nei]:
           flag[nei] = True
           neiNoDraw, neiDraw = dfs(nei)
           nodraw.append(neiNoDraw)
           draw.append(neiDraw)
           drawed.append(W + neiNoDraw)
    if draw: # 如果不是叶子
       noDrawAns = sum(map(max, zip(draw, nodraw)))  
       drawDiff = [drawed[i] - draw[i] for i in range(len(draw))] 
       maxDiffIndex = drawDiff.index(max(drawDiff))
       drawAns = max(noDrawAns, drawed[maxDiffIndex]+sum(draw)-draw[maxDiffIndex]) 
       return noDrawAns, drawAns
    return 0, 0
全部评论
有霉粉啊
点赞 回复 分享
发布于 2023-03-30 20:57 广东
补充下细节: T3 X枚举,然后Y直接取n/X和(n/X)+1计算哪个绝对值小即可; T4 允许自己和孩子之间染色这个状态即drawAns的计算需要注意一下,应该选择与哪一个孩子染色呢?应当对每一个孩子考虑,“选择与它染色得到的最大权值”和“不选择与它染色”得到的最大权值之差,即代码中的drawDiff,这个差最大的就是染色对权值贡献最大的孩子,我们选择与它染色。
点赞 回复 分享
发布于 2023-03-29 21:21 广东
a了前两个,第三个一直是61.1,最后一个直接放弃
点赞 回复 分享
发布于 2023-03-29 21:15 辽宁
大佬太强了
点赞 回复 分享
发布于 2023-03-29 21:13 广东

相关推荐

部门:国际化广告crm与交易平台记不全了,大概回忆下一面(3/26)总体上不是难,面试官人很好,在我回答后都会给一些他的看法实习相关提问,这一块面试官更多的是倾听,然后给我设计的东西说了一些他的看法和建议用消息队列,redis做什么kafka的幂等性如何实现,如果说消息已经写入了,消费者如何确保只消费一次(我按照如何确保消息只执行一次说的)讲一下数组和链表有什么区别如何判断一个链表有没有环,将思路就行,两种方法mysql事务的acid,具体都是干什么的还有一些可能忘记了手撕:用rand10实现rand7合并两个排序好的链表用递归可以吗合并k个有序链表手撕全撕,比较简单反问环节:对我有什么建议,面试官给了我很积极正向的评价业务介绍的也很详细面试完一小时约二面-----------------------------------------------------------------------------------------------------------------二面(3/30)面试官全程比较严肃讲一下实习,挑一段自认为做的最好的经历讲一下(问了没多久,就10分钟左右吧,可能面试官不是很感兴趣)了解哪些数据结构讲一下红黑树和b+树你知道mysql用的什么数据结构吗?为什么不用b树事务acid(不知道二面面试官为什么又问一下这个问题)我在讲acid的时候,说一致性时,提到了一个转账的场景,正好碰到了部门的业务,让我细说了一下主要就是一个场景题如何设计一个给账户充值或扣款的接口,考虑的详细一些这个内容我提到了幂等性的设计,后续针对这个场景题的提问都是幂等性相关的有用过ai coding吗,在什么场景使用,使用应该注意什么算法:判断一个链表有没有环(一方面是很简单,还有一方面是这不是一面考过了吗)反问:有什么建议,建议我实习的过程中可以不光了解自己做的东西,还要了解下整个团队做了哪些东西(可能是觉得我实习做的东西比较片面)部门业务:这个介绍的和一面面试官介绍的不太一样,提到了需要做一些数据分析咱们团队如何看待ai coding:目前各个公司,国内外都处在一个探索的阶段,ai coding一方面并没有那么智能,还有一方面就是没有一个使用的规范,可能每个人都有自己的使用习惯,这个可能还需要再探索探索。ai coding未必能让一个程序员干的事情更少,但是需要程序员掌握更多东西,但是ai的发展又很快二面的面试官没有什么反馈,基本上就是我说什么就听什么-----------------------------------------------------------------------------------------------------------------面完第二天问hr,说没通过,问什么原因,说是匹配度问题(这个团队用的是java,在字节比较少见,还有就是二面面试官提到了数据分析,可能是因为这两块吧)去年9月面字节面的非常糟糕,面评都脏完了,这两次面试应该算是洗回来了,又约到了这周四的面试,加油最后引用一句曹丞相的话"胜败乃兵家常事,此战我军虽失利,然北方仍由我所据,几十万兵马尚存,待重整旗鼓,来日再战必胜。"来日再战必胜!
momo_ciao:rand10实现rand7的话,如果出现大于7的数直接重试不就好了,没懂。
查看16道真题和解析
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务