阿里笔试419 45minAK题解
写了大概45min 感觉挺水的~
第一题写了20min 第二题写了10min 第三题写了15min
T1 给定一个序列,问有多少个区间的众数次数>=k
sol:考虑two-pointer。枚举左端点,寻找最小的右端点是的众数次数>=k
推导后发现需要支持以下功能
1.增加某一个数的出现次数
2.减少某一个数的出现次数
3.查询众数的出现次数(即出现次数最多的数字的出现次数)
这些功能可以抽象化可以理解为维护一个集合,支持单点修改,支持查询最大值
因此考虑使用堆来实现,具体实现过程类似dijkstra找最短节点的过程。
T2 题意大概就是模拟一个消消乐的过程
sol:bfs暴力模拟消除的过程,而下落的过程可以逐行维护每一列的高度来模拟实现。
T3 求所有长度为n的字符串有多少个长度为3的回文子串
考虑动态规划
考虑一个字符串的最后两个字符的形式,要么是"aa",要么是“ab”。
不妨记
"aa"结尾的字符串的数量为x[n],记这些字符串的权值和为fx[n]。
记"ab"结尾的字符串的数量为y[n],记这些字符串的权值和为fy[n]。
"aa"有两种转移方式——>"aaa",“aab”
其中"aaa"有1种方式。
其中"aab"有25种方式,指的是填与"a"不同的25个字符。
"ab"有三种转移方式——>"aba",“abb”,"abc"
其中"aba"有1种方式。
其中"abb"有1种方式。
其中"abc"有24种方式,指的是填与"a"不同的25个字符。
这里简单写一下dp的转移方程
x[n]=x[n-1]+y[n-1]
fx[n]=x[n-1]+fx[n-1]+y[n-1]
y[n]=25x[n-1]+25y[n-1]
fy[n]=25fx[n-1]+y[n-1]+25fy[n-1]
直接暴力dp复杂度为O(n)
考虑使用矩阵快速幂优化(类似快速求斐波那契数列)
即可做到O(logn)
第一题写了20min 第二题写了10min 第三题写了15min
T1 给定一个序列,问有多少个区间的众数次数>=k
sol:考虑two-pointer。枚举左端点,寻找最小的右端点是的众数次数>=k
推导后发现需要支持以下功能
1.增加某一个数的出现次数
2.减少某一个数的出现次数
3.查询众数的出现次数(即出现次数最多的数字的出现次数)
这些功能可以抽象化可以理解为维护一个集合,支持单点修改,支持查询最大值
因此考虑使用堆来实现,具体实现过程类似dijkstra找最短节点的过程。
T2 题意大概就是模拟一个消消乐的过程
sol:bfs暴力模拟消除的过程,而下落的过程可以逐行维护每一列的高度来模拟实现。
T3 求所有长度为n的字符串有多少个长度为3的回文子串
考虑动态规划
考虑一个字符串的最后两个字符的形式,要么是"aa",要么是“ab”。
不妨记
"aa"结尾的字符串的数量为x[n],记这些字符串的权值和为fx[n]。
记"ab"结尾的字符串的数量为y[n],记这些字符串的权值和为fy[n]。
"aa"有两种转移方式——>"aaa",“aab”
其中"aaa"有1种方式。
其中"aab"有25种方式,指的是填与"a"不同的25个字符。
"ab"有三种转移方式——>"aba",“abb”,"abc"
其中"aba"有1种方式。
其中"abb"有1种方式。
其中"abc"有24种方式,指的是填与"a"不同的25个字符。
这里简单写一下dp的转移方程
x[n]=x[n-1]+y[n-1]
fx[n]=x[n-1]+fx[n-1]+y[n-1]
y[n]=25x[n-1]+25y[n-1]
fy[n]=25fx[n-1]+y[n-1]+25fy[n-1]
直接暴力dp复杂度为O(n)
考虑使用矩阵快速幂优化(类似快速求斐波那契数列)
即可做到O(logn)
全部评论
第三题,直接(n-2)*26^(n-1),特判n<3,快速幂即可
我先膜了
太猛了吧、
阿里数字供应链部门刚开始春招,欢迎同学踊跃报表。查看个人首页帖子 查看部门介绍和扫码线上投递简历。 https://www.nowcoder.com/discuss/472422701500485632
这就是神仙卧槽
相关推荐
查看18道真题和解析 点赞 评论 收藏
分享
03-05 13:31
郑州轻工业大学 Java
在刷代码的我很纠结:这是我看到的牛客写的比较好的简历,你看他结果有数据量化,能够帮hr快速识别好坏,你的落脚点太多是在执行层面,但hr更想看到的不止你的专业能力还有其他隐形因素比如说统筹力,抗压力等等
查看图片 点赞 评论 收藏
分享
02-25 16:29
齐鲁工业大学 golang
找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。
你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。
工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。 点赞 评论 收藏
分享