阿里笔试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)
全部评论
第三题,直接(n-2)*26^(n-1),特判n<3,快速幂即可
2 回复 分享
发布于 2023-04-19 22:29 湖北
我先膜了
2 回复 分享
发布于 2023-04-19 21:53 甘肃
太猛了吧、
1 回复 分享
发布于 2023-04-20 15:38 香港
阿里数字供应链部门刚开始春招,欢迎同学踊跃报表。查看个人首页帖子 查看部门介绍和扫码线上投递简历。 https://www.nowcoder.com/discuss/472422701500485632
点赞 回复 分享
发布于 2023-04-20 15:18 浙江
这就是神仙卧槽
点赞 回复 分享
发布于 2023-04-19 21:49 辽宁

相关推荐

05-11 11:48
河南大学 Java
程序员牛肉:我是26届的双非。目前有两段实习经历,大三上去的美团,现在来字节了,做的是国际电商的营销业务。希望我的经历对你有用。 1.好好做你的CSDN,最好是直接转微信公众号。因为这本质上是一个很好的展示自己技术热情的证据。我当时也是烂大街项目(网盘+鱼皮的一个项目)+零实习去面试美团,但是当时我的CSDN阅读量超百万,微信公众号阅读量40万。面试的时候面试官就告诉我说觉得我对技术挺有激情的。可以看看我主页的美团面试面经。 因此花点时间好好做这个知识分享,最好是单拉出来搞一个板块。各大公司都极其看中知识落地的能力。 可以看看我的简历对于博客的描述。这个帖子里面有:https://www.nowcoder.com/discuss/745348200596324352?sourceSSR=users 2.实习经历有一些东西删除了,目前看来你的产出其实很少。有些内容其实很扯淡,最好不要保留。有一些点你可能觉得很牛逼,但是面试官眼里是减分的。 你还能负责数据库表的设计?这个公司得垃圾成啥样子,才能让一个实习生介入数据库表的设计,不要写这种东西。 一个公司的财务审批系统应该是很稳定的吧?为什么你去了才有RBAC权限设计?那这个公司之前是怎么处理权限分离的?这些东西看着都有点扯淡了。 还有就是使用Redis实现轻量级的消息队列?那为什么这一块不使用专业的MQ呢?为什么要使用redis,这些一定要清楚, 就目前看来,其实你的这个实习技术还不错。不要太焦虑。就是有一些内容有点虚了。可以考虑从PR中再投一点产出
点赞 评论 收藏
分享
评论
10
35
分享

创作者周榜

更多
牛客网
牛客企业服务