获赞
90
粉丝
80
关注
7
看过 TA
2154
南京大学
2026
C++
IP属地:江苏
暂未填写个人简介
私信
关注
60分选择,40分编程编程题:题目一:最少操作让数组首位最大题意给定一个长度为 n 的数组 vec,可以进行如下操作:从数组中第 2 个到最后一个元素中选择一个元素 x。将 x 的一半(向下取整)加到数组的第一个元素 vec[0] 上,同时更新 x = x - val。重复操作,直到 vec[0] 大于等于数组中其他所有元素。求最少需要多少次操作。解法每次操作选择当前 最大元素,这样能最快提高首元素。循环直到首元素大于等于剩余元素即可。题目二:宫殿问题拿宝物问题大致题意从左上角 (0,0) 出发移动到右下角 (n-1,n-1),每步只能向右或向下移动。每个格子可以选择 拿 或 不拿,移动规则如下:横向向右移动:必须拿当前格子才能向右走。纵向向下移动:必须不拿当前格子才能向下走。目标是选择路径和格子,使 总数值最大。解法动态规划:定义状态:dp[i][j][0]:到 (i,j) 且拿当前格子的最大值dp[i][j][1]:到 (i,j) 且不拿当前格子的最大值状态转移:dp[i][j][0] = max(dp[i][j-1][0], dp[i-1][j][1]) + grid[i][j];dp[i][j][1] = max(dp[i][j-1][0], dp[i-1][j][1]);初始化:dp[0][0][0] = grid[0][0];dp[0][0][1] = 0;for(int i = 1;i < n; ++i){dp[0][i][0] = dp[0][i-1][0] + grid[0][i];dp[0][i][1] = dp[0][i-1][0];result = max(result,(max(dp[0][i][0],dp[0][i][1])));}for(int i = 1;i < n; ++i){dp[i][0][0] = dp[i-1][0][1] + grid[i][0];dp[i][0][1] = dp[i-1][0][1];result = max(result,(max(dp[i][0][0],dp[i][0][1])));}
投递滴滴等公司10个岗位
0 点赞 评论 收藏
分享
1.从 n 个商品中选取两个商品,如果它们的价值之和是 m 的倍数,那么这两个商品就可以免费拿走。问题是求有多少种这样的商品组合。解法思路类似两数之和:使用哈希表记录每个数对 m 取余的结果,满足条件的两个数需要它们的余数之和等于 m(或者两者余数都为 0),即 (a % m + b % m) % m == 0。2.每天都会有一只 ​​小动物来到你的农场 ,总共有 ​​n 只小动物​​会在 ​​n 天内依次到来​​,每个小动物需要每天吃si框食物,再总消耗不超过总食物框数的前提下,求最后能养多少动物解法:计算每只动物的总消耗(n -i * (nums[i])),排序后从头开始累加到超过总食物框数即可3.从 N 个任务中,选出一个连续的区间(任务序列),使得这个区间内所有任务的分数之和 至少为 T​​(也就是满足总分数 ≥ T 的最小窗口)。而在这个满足条件的窗口中,找到一个 ​​最优解:即该窗口中 所有任务的难度的最大值 尽可能小​​。解法:滑动窗口+单调队列,双指针维护一个窗口,保证窗口内的分数总和 ≥ T;单调递减队列维护当前窗口中的最大难度值;4.在一条道路旁种了一排树,每棵树都有一个美观值。要求这条道路上任意一段连续的树的美观值之和都不能等于 M。为了达到这个目标,可以在任意位置插入一棵新的树(可自定义其美观值),问最少需要插入多少次新树,才能保证整条道路上不存在任何一段连续子序列的美观值和为 M。第四题我就单纯的计算了前缀和==m的个数,通过了20%。总体来说难度不大(点名mt),一小时a了3.2,最后一题没啥思路也不想写了。直接交卷。
Microscope...:第一第三题我超时了,用的双指针遍历,不知道怎么优化剪枝,第二题贪心过了
投递拼多多集团-PDD等公司10个岗位
0 点赞 评论 收藏
分享
只吃桃子不吃核:同学,为什么我问华为hr都说只有暑期呀,华为现在有日常的岗位吗
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务