当前位置: 首页 > 面试经验 >

阿里国际笔试 918(算法)

优质
小牛编辑
82浏览
2023-09-18

阿里国际笔试 918(算法)

第一第二题ac了,最后一题暴力骗分20%,没时间细想了
第一题,猴子摘桃 签到题
输入n和两个长度为n的数组a,b
a表示每颗树的高度
b表示树上果子的高度
小红(猴子)从第一颗树的第0高度开始,每次可以进行两个操作,1)高度加一或减一;2)移动到下一颗树的同等高度(要确保在下一颗树的高度范围内)
求小红摘完全部果实的最小操作次数
逐步模拟就行了,一次遍历,注意变量类型为long,不然只能过10%
第二题,围圈圈
n个人围成一圈,每个人只记得自己右手边的两个人,分别为a和b(ab并不一定按顺序)
求围成一圈的人的顺序
也算是模拟吧,从第一个人开始,每次确定下一个人是谁,一次遍历。注意特判n==3的时候,直接输出1 2 3,否则程序可能输出1 3 2,他们两的输入是一样的,但是判题器不认为1 3 2是对的,属于小bug,不特判的话输出了1 3 2只能过94%
第二题详细一点的思路就是先确定第一个人为1(任何人都可以)然后依次看第idx个人i的右边两个人a[i]和b[i]是不是分别在对方的右边,如果a[i]==a[b[i]]或a[i]==b[b[i]],那么说明a[i]在b[i]右边,则i的右边顺序为b[i],a[i],反之则为a[i],b[i],那么i的下一个人就确定了,然后再去看idx+1
第三题,最长递增子数组
有两个长度为n的数组a,b和一个空数组c,现在可以每次从a或者b的开头将一个数字放入c中,直到a和b为空。
求能够所有可能的c中最长递增子数组长度
最长递增子数组:递增数组,且相邻元素差值为1
直接暴力骗分过了20%,枚举所有a和b的升序子数组,将他们合并,看是否为递增子数组,讲道理顺着我这个思路复杂度应该可以再优化,不过因为先做的算法题,最后没多少时间了,骗了点分就去做选择题了
后面想了一下,可以用两个滑动窗口来优化,不过也挺复杂的就是了
蹲大佬的思路
 类似资料: