华为机试,刚考完,没答出来,求解答

今天华为机试,有2道题没答出来。求大佬们来解答

1,有一排树木,按编号1,2,3.......,总共有m颗树,会死掉n颗,这n颗的编号假如为2,4,6......,现在会给你k颗树去补掉已死的,
请问求补完之后,连续数最大的长度。
例子:
输入
5          -------开始树的总数
2          -------死掉2颗
2   3     --------死掉的编号2,3
1          --------可以补1颗树
输出
3
(即一开始有1,2,3,4,5 树,会死掉2颗,编号为2,3,能补上1颗,则在补上之后最大连续为3,4,5,所以长度是3)



还有一题:
有一堆书,要是书的长宽都大于(不是>=,是>)另外一本书,则可以叠放上面,求最大叠的层数
例子:
输入
[[20,16],[15,11],[10,10],[9,10]]         (里面的每一个数组都代表一本书)
输出
3




两道题的格式:
public class Main {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);         // TODO.........
    }
}







#华为测评##华为审批#
全部评论
都挺简单的,第一题考察滑动窗口,也就是让窗口中始终存在k棵死掉的树,然后求最长连续子串。第二题刚好我也做到了,其实就是一道动态规划求最长连续子串问题,因为有宽度和长度两个维度,因此可以对其中一个维度排序,然后就只需要考虑另一个维度,然后使用动态规划,就能求解。第一道题easy,第二道题勉强算middle
4 回复 分享
发布于 2022-10-25 19:02 广东
第二题可以看看力扣上"俄罗斯套娃信封",第一题我的理解是滑动窗口,当前还有剩余的树就滑动右指针,并记录最大长度,不然就滑动左指针
2 回复 分享
发布于 2022-10-25 01:53 湖北
都是easy题
1 回复 分享
发布于 2022-10-25 07:44 湖南
好家伙,你这是校招还是社招啊,怎么还能机考?
1 回复 分享
发布于 2022-10-25 14:20 上海
第一题不种未成活胡杨,第二题书籍叠放
点赞 回复 分享
发布于 2022-10-29 15:57 陕西
第一题没啥可说的,双指针跑一遍就行,第二题排个序dp一下,dp[i]代表以i为结尾的最大值,假如按宽排序,数据1e4直接跑n*n,数据要是1e6需要加个树状数组或者线段树维护一下前面<=当前长度的最大值(直接用个map也行)。
点赞 回复 分享
发布于 2022-11-07 11:19 北京
你这是q4还是q3啊
点赞 回复 分享
发布于 2022-11-15 15:39 四川

相关推荐

评论
5
22
分享
牛客网
牛客企业服务