蚂蚁笔试0509,思路分享

这次蚂蚁笔试感觉比阿里简单点,选择就不说了,随缘选。

编程本人:2.9/3,主要卡在第二题,下面分享个思路吧:

1.找第i个不带重复数字的16进制数字

解法:直接暴力找即可。

注意:16进制里的字母要大写,刚开始弄成小写,只能过40%,改成大写就100%了

2.对于一组数字,有些数字的某些位置被“?”覆盖了,“?”可以是任意数字,找极差最大情况。

解法:分享个暴力思路:先把没“?”的存起来,找最大最小值,然后在把有“?”的数字字符串存起来,根据字符串大小排序。

比如:[1, 12, ??8, ?, 1?], 改成 [1, 12]+[??8, ?, 1?]

则最大数为??8改成998,最小数为?改成0,输出极差998

注意:这里有个问题没考虑,就是对于带?的数字,他只能变最大值,或者变最小值,变一次就不能再变了。刚开始没注意这种情况,最后没时间改了,只通过90%。

3.定义好串,当且仅当每个字母出现的次数均为偶数。计算该字符串有多少子序列是好串?(子序列在原串中可以不连续)。例如,"arcaea"的子序列有"aaa"、"ace"等等。

解法:排列组合问题。

1.对于一个字符串 ,先计算出每个字符出现的个数。

2.让每个字符出现偶数次的组合相乘(0次,2次,4次,……)就是答案。

也就是说:ans =(字符1出现0次+字符1出现2次+...)*(字符2出现0次+字符2出现2+...)*……*(字符n……)

3. 对应字符a,他的个数为n,可以用组合公式写为:ans = C(n,0)+C(n,2)+C(n,4)+...+C(n,n) * 其他字符组合数

4.由于二项式定理:C(n,0)+C(n,2)+C(n,4)+...+C(n,n)(如果n是奇数,这里就是n-1)=2^(n-1)

5 综上所述,令n为字符个数的列表,则 ans = 2^(n[i]-1)

s = "arcaea"
M = 10*9+7
dic = {}
for i in s:
  dic[i] = dic.get(i,0) + 1
ans = 1
for k, v in dic.items():
    ans *= 2**(v-1)
    ans %= M
# 保证结果大于0
print((ans - 1 + M) % M)

#蚂蚁校招##蚂蚁2024暑期实习##蚂蚁笔试##蚂蚁##暑期实习#
全部评论
老兄之前不是去美团了嘛
点赞 回复 分享
发布于 2023-05-10 14:32 北京

相关推荐

08-24 14:45
河南大学 Java
如图所示,我在大二升大三的暑假拿到了美团的日常实习,这一路走来很不容易,所以想分享一下经验,也算是传承,因为一路走来帮助我的人也有很多。第一😇(学习路线),看黑马的视频只是一个入门,我是一直看完了springcloud。第二😇(项目),项目的话没有好坏,只有新奇与陈旧,新的项目用的人少的往往能达到让面试官眼前一亮的效果,所以没有固定的推荐,但是大家可以努力去多做几个项目,这样技术你都学会了,之后可以根据新的项目进行改造。第三😇(八股文),这个真就是跟着网站上背就行了 一定要自己整理一套自己的八股笔记,有自己的思考与理解,我理解之后即使几个月不看也能顺滑的说出来。第四😇(面试注意),面试的时候要体现自己的思考,如果你能说出来一整个问题的逻辑那很好,但是不要着急,先说百分之八十,后百分之二十说是自己思考出来的。第五😇(当你所有的都融会贯通),八股项目相结合,八股与八股相串联,问到你一个简单的问题可以扩展延伸让面试官措不及防,被你控制,这样面试官能够问你不会的问题的概率也会大大下降。等待与努力的过程是无比的焦虑与忐忑,当字节三面挂与快手二面挂的时候我已经开始摆烂了,因为双非的机会真的不多,都没把握到,最后还是美团收留了我,任何人的路径都是不可复制的,任何人的经历也是独一无二的,不要受别人影响,加油做自己。接受大家积极发问,也可以私信我哦。
永泽one:美团官网投的嘛佬,根本约面不了
大厂面试问八股多还是项目...
点赞 评论 收藏
分享
评论
3
7
分享

创作者周榜

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