2026届拼多多服务端开发工程师笔试

第一次写评论。题目做得很惨,全是一些稀奇古怪的Bug,鉴定为长时间没写过代码导致的。大致记录一下我的做题经历。
第一题:求幸运年份。直接暴力就可以写,注意要输入的年份先加一后判断,否则的话一个测试点都过不了。很水的一道题,大概花了7分钟。
第二道:求开灯数量。我的首选思路是使用队列,笔试的时候也采用的这个方案。先找到这些灯开启后会直接影响哪些灯的开关,再使用队列求解。这道题要背大锅,卡了我一个多小时,一直段错误,给我改得怀疑人生,后来一行一行打印发现数组忘记加[]了,然后,紧急修改了后对了0.9多,实在没精力改这个题了。
第三题:求最小的驼峰数组。这道题维护一个前缀数组和一个后缀数组就好了,然后分别枚举峰值的位置,判断最小值。这道题比上一道简直顺了太多了,至少我只是忘记查找的是最小值了,还有maxs的默认值太小导致得不到正确解等小问题,大概花了27分钟。
第四道题:求能否到达n号营地。我的思路是广搜或者动态规划(?没试过)。还是时间不够的锅。我匆匆读了一遍题,看了眼样例就开始写了,样例过了就开交,然后就G了,仔细一看,发现是广搜时没有记录路径导致的路径上存在剩余的补给,而且忘记输出-1了!太抽象了,然后只有3分钟了,放弃了,-1都没输出。但是就我目前对于广搜的思路来讲的话可能会在某些测试点上超时?不确定。
全部评论
第四题深搜剪枝也不会超时 广搜应该更短
点赞 回复 分享
发布于 08-04 21:45 北京

相关推荐

09-10 21:13
门头沟学院 Java
第一题: 把数组排序后dp,dp[i]代表从1到i最多可以保留几个数。遍历数组,二分查找左边第一个差值大于d的数,假如二分出来下标为j,直接dp[i] = dp[j] + 1。dp之后扫一遍dp数组取全局最大值,答案就是n减去这个全局最大值。注意如果删掉数量为奇数的话,答案得减一第二题:首先对于字符串第一个plog一定是不会被评论的,由此可得只要轮数足够多,所有与第一个plog不同的plog一定会被删除,所以把答案设置为第一个连续的字符的长度。通过观察可得,可以定义一个变量x,遇到一个不同于第一个plog的plog加一,遇到相同的话,如果x大于0就把x减一,否则就把答案减一。第三题:由题可得这是一棵树。如果x>=y,显然可以一个一个节点炸,输出n*x就行。否则我们要让使用操作2的次数尽可能多。要让操作2尽可能多的话,就要通过使用操作一把连通块数量变得尽可能多。这可以用树上dp作。定义dp[u][0]为对该节点使用操作1,dp[u][1]是不使用,以u为根节点得到的子树内最大连通块的数量。对每个节点初始化 dp[u][1] = 1, dp[u][0] = 0转移时通过dfs,对于所有子节点v,有:dp[u][0]  = sum(max(dp[v][0]), dp[v][1]));dp[u][1] = sum(max(dp[v][0]), dp[v][1] - 1));使用操作2最大次数就是max(dp[root][1], dp[root][0]),这个次数乘y加上剩余节点数乘x就是答案了
投递小红书等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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