华为笔试0911
华为笔试0911,有史以来最简单的一次笔试。一小时不到,写完了。吐槽一下华为笔试的那个编辑器和页面真的窜稀。样例不能复制,要一个一个手打,那个编译器也没有代码提示,也没有一些基础的早相是找相同或者之类的功能写代码,只能一个一个戳,不知道的还以为是在txt上写。
三道题都挺简单的,甚至我觉得可能第一道题难度还稍微大一点,容易被误导。
第一题丢垃圾,给定一个n×m的矩阵,用二代表着为空,用一代表着有一个小区,用零代表着有一个垃圾站。然后还有个负数代表着是有个障碍物。问,每个小区丢垃圾所需要的步数的和最小值为多少?利用bfs,开始把所有的垃圾场压进队列当中,然后正常bfs找每个位置上下左右相邻的位置,首先判断这个位置是不是空旷的,能不能到达,曾经有没有到达?如果判断到当前位置是小区,那么就把总答案加上当前的步数即可。利用bfs的特性,可以保证每个小区到垃圾场的位置一定都是最近的。
第二题堆箱子,给定n个箱子,最大1000个,然后给出每个箱子的长宽高,求从上往下堆箱子给下面的箱子长宽高都要大于上面的箱子,留在符合条件下面搭建出来的箱子,最高总高度。那其实就是简单的dp,甚至连dp都说不上。首先,对所有箱子进行一次排序,把它们按照高度排序。(不排序只过25%的可以判断一下是不是这个原因)。然后遍历每一个箱子,对于每一个箱子,找这个箱子上面的所有箱子都比他长宽高都小的,如果前面的某一个箱子假设为j比现在箱子小。dp(now)=max(dp(now),dp(j)+high(now)).这样就可以得到一前箱子为底可以搭出的最高的高度,一路往下最后一可以找到所有箱子的最高高度。
第三题是一个覆盖dp题,其实实际跟第二题是类似的,给定最多n为一万个站点,在有最多m为十万个方案,个方案有一个lr和val.代表着这个方案,需要l站点一直到r站点里面的所有站点,并且可以带来VAL个收益.问,现在给出所有方案,最多能够赚多少钱?实际也跟第二题类似,有点贪心的味道。先把每一个方案按照他的r进行排序(为什么按照r排序这是一个贪心的思想,我很难解释得清自己举两个例子捋一下可能就懂了)。把它们放到一个队列里面,排好序,不停的拿出头部方案,就是当前最左边的方案。然后遍历每一个站点。两种情况第一种就是头部的方案,他的r的位置也大于当前的位置
三道题都挺简单的,甚至我觉得可能第一道题难度还稍微大一点,容易被误导。
第一题丢垃圾,给定一个n×m的矩阵,用二代表着为空,用一代表着有一个小区,用零代表着有一个垃圾站。然后还有个负数代表着是有个障碍物。问,每个小区丢垃圾所需要的步数的和最小值为多少?利用bfs,开始把所有的垃圾场压进队列当中,然后正常bfs找每个位置上下左右相邻的位置,首先判断这个位置是不是空旷的,能不能到达,曾经有没有到达?如果判断到当前位置是小区,那么就把总答案加上当前的步数即可。利用bfs的特性,可以保证每个小区到垃圾场的位置一定都是最近的。
第二题堆箱子,给定n个箱子,最大1000个,然后给出每个箱子的长宽高,求从上往下堆箱子给下面的箱子长宽高都要大于上面的箱子,留在符合条件下面搭建出来的箱子,最高总高度。那其实就是简单的dp,甚至连dp都说不上。首先,对所有箱子进行一次排序,把它们按照高度排序。(不排序只过25%的可以判断一下是不是这个原因)。然后遍历每一个箱子,对于每一个箱子,找这个箱子上面的所有箱子都比他长宽高都小的,如果前面的某一个箱子假设为j比现在箱子小。dp(now)=max(dp(now),dp(j)+high(now)).这样就可以得到一前箱子为底可以搭出的最高的高度,一路往下最后一可以找到所有箱子的最高高度。
第三题是一个覆盖dp题,其实实际跟第二题是类似的,给定最多n为一万个站点,在有最多m为十万个方案,个方案有一个lr和val.代表着这个方案,需要l站点一直到r站点里面的所有站点,并且可以带来VAL个收益.问,现在给出所有方案,最多能够赚多少钱?实际也跟第二题类似,有点贪心的味道。先把每一个方案按照他的r进行排序(为什么按照r排序这是一个贪心的思想,我很难解释得清自己举两个例子捋一下可能就懂了)。把它们放到一个队列里面,排好序,不停的拿出头部方案,就是当前最左边的方案。然后遍历每一个站点。两种情况第一种就是头部的方案,他的r的位置也大于当前的位置
全部评论
强啊佬
强啊,我也觉得还行,这个一个半小时
续上面,当前队列的头部位置一定是所有方案里面最靠小的。这个方案的r也大于当前的位置,那证明没有方案可以新增。dp[now]=dp[now-1].另外一种情况,存在方案的r小于now.(可能有多个方案r相等,假设是J号方案,需要从j.l一直到j.r的基站,产生j.val个价值)那么if(now==j.r)
dp[now]=max(dp[now-1],dp[j.l-1]+j.val)
得到转移方程,上面这个是核心转移方程。理解它就会做这道题。最后输出dp[n]。结束
华为的编译器气死我了,我以为不能使用本地编译,第一道题自己用他的编译器写了半小时,括号里的东西写着写着就丢了😅😅一会儿括号也丢了😅忍无可忍问了客服,最后用vscode写的,好在三道全做完了。
最后一提茅塞顿开,我太菜了,算下来刚刚过线
借楼:华为云计算期待同学们投递哈,在西安和上海均有HC,招聘大量软件测试、测试开发同学哈~有意向的同学环境私戳了解。
虽然但是 那个测试用例点一下就自动复制到测试输入那儿了 不用自己手动粘贴
tql,膜拜一下
笔试是取最高一次通过率提交还是最后一次提交结果呀,后面通过率改底了时间到自己交了😭
我靠我第二道题没排序20%,我看用例是排序了以为排序了,
牛逼我都想不到是dp,刚过线
相关推荐
10-23 20:46
门头沟学院 Java 点赞 评论 收藏
分享
投递华为软件技术有限公司等公司10个岗位 >
点赞 评论 收藏
分享
10-18 10:26
门头沟学院 Java 点赞 评论 收藏
分享