阿里国际笔试 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的升序子数组,将他们合并,看是否为递增子数组,讲道理顺着我这个思路复杂度应该可以再优化,不过因为先做的算法题,最后没多少时间了,骗了点分就去做选择题了

后面想了一下,可以用两个滑动窗口来优化,不过也挺复杂的就是了

蹲大佬的思路

全部评论
???你是开发吗,怎么题不一样
1 回复 分享
发布于 2023-09-18 21:02 四川
如果不考虑严格递增的话好像只要是两个递增的子数组都可以合并,所以只要合并两个最大的就行了?
点赞 回复 分享
发布于 2023-09-20 11:35 广东
第二题不知道为什么只能过用例菜鸡跪求大佬分享第二题思路and代码
点赞 回复 分享
发布于 2023-09-18 23:18 四川

相关推荐

04-02 09:40
门头沟学院 Java
刷到这个话题真的太有发言权了,作为计算机专业的后端开发,我先在杭州某大厂实习了半年,秋招失利后又去了一家本地小厂实习了 3 个月,两段经历天差地别,今天就跟牛友们唠唠最真实的体感,没有半句虚话。先说说大厂实习的日子,我去的是字节杭州的商业化部门,做后端开发。刚进去的时候,真的被大厂的规范震撼到了。入职第一天,就有完整的新人手册,从代码规范、开发流程、权限申请,到上线规范、故障处理,全给你安排得明明白白。有一对一的 mentor,还有专属的新人培养计划,前两周不用写业务代码,就是熟悉架构、跑通流程,mentor 会耐心给你讲每一个环节,连 Git 提交规范都会一点点教你。但大厂实习最真实的感受,就是极致的规范,和极致的螺丝钉感。我在大厂待了半年,写的最多的就是 CRUD 接口,负责的永远是一个大项目里的某一个小模块的某一个小功能,连整个项目的完整架构都很难接触到。所有的流程都卡得死死的,需求评审、技术评审、开发、code review、测试、灰度、上线,每一步都要走流程,一个需求从评审到上线,快则两周,慢则一个月。你不用考虑太多业务逻辑,不用操心架构设计,甚至不用想代码怎么优化,因为所有的规范都给你定好了,你只需要当好一颗螺丝钉,把分给你的那一小块活干好就行。当然,大厂的好处也显而易见。食堂免费、房补每月 1500、下午茶、健身房应有尽有,实习薪资也比小厂高了快一倍。更重要的是,这段经历写在简历里,秋招投任何一家公司,基本都能过简历关,这是小厂实习比不了的。再说说小厂实习的经历,是杭州一家不到 100 人的创业公司,做企业级 AI 应用的,我去了之后直接进了核心研发组。和大厂完全相反,这里没有那么多繁文缛节,没有层层审批的流程,甚至连严格的 code review 都没有。入职第二天,leader 就把一个完整的 RAG 优化需求交给了我,从需求对接、技术方案设计、开发测试,到上线运维,全让我一个人负责。在小厂的 3 个月,我接触到的东西,比在大厂半年都多。在大厂我连数据库权限都只有只读,在小厂我能直接接触核心业务库,能参与整个产品的架构设计,甚至能跟老板直接聊产品的迭代方向。但小厂的问题也同样突出。没有规范的培养体系,没人带你,所有东西都要自己摸、自己踩坑。写的代码没人 review,上线出了问题全要自己扛,有次我写的接口上线后出了性能问题,凌晨两点被喊起来回滚,连个帮忙的人都没有。福利更是没法比,没有房补、没有食堂,实习薪资只有大厂的一半,连五险一金都是按最低基数交的。更重要的是,这段实习经历,在秋招里的含金量,和大厂完全不是一个量级的。很多人问我,大厂实习和小厂实习最大的区别到底是什么?我觉得,大厂给你的是下限,小厂给你的是上限。大厂会用成熟的体系,帮你建立规范的职业习惯,让你知道正规军是怎么打仗的,给你的简历镀上一层金,哪怕你只是个螺丝钉,也能拿到行业的基础入场券。但你很容易被困在自己的小模块里,看不到全局,成长全靠自己主动。小厂不会给你兜底,没有规范的体系,你要自己摸爬滚打,踩很多坑,但你能接触到完整的业务闭环,能亲手把一个需求从 0 到 1 落地,你的成长速度和上限,完全取决于你自己。最后给牛友们一句真心话:如果你是为了秋招简历镀金、想学习正规的研发流程、求稳,那闭着眼选大厂;如果你已经有了基础的项目经验,想快速练手、接触核心业务、提升全栈能力,那靠谱的小厂,也是很好的选择。没有绝对的好坏,只有适不适合自己
大厂实习和小厂实习最大的...
点赞 评论 收藏
分享
评论
2
9
分享

创作者周榜

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