蚂蚁笔试2024.3.30

24届要毕业的我,不小心又做了实习笔试。一直以为是算法的笔试,然后搞了个开发的笔试,算了当回忆了,记录一下。
有一说一,今天的选择题比前几天算法选择题简单很多,基本能对75%以上吧。

第一题题意:对于n个顶点,判断m条边能否构成图切不包含重边自环。
做法:临界n-1,n*(n-1)/2

第二题题意:给定一个长度为n(<1e5)的数组,最多操作m(<1e5)次,每次选连续的k(小于n)个数加1,求操作完之后数组最小值的最大值。
做法:看到最小最大放在一起时,一般就是二分答案。区间加单点查询,搞个八百年没写了的线段树从左到右扫一遍。时间复杂度O(nloglog)。

第三题题意:给定一个长度为n(<1e5)的数组,值为-1或者0或者1,求分别有多少子序列乘积为-1,0,1。
做法:和数组本身没多大关系,记num0表示0的个数,num1表示1的个数,num2表示-1的个数。
乘积为0的公式为(2^num0 - 1) * (2^(num1+num2))
乘积为-1的公式为(\sum_{i为奇数} (C(num2, i)) * (2^(num1))
乘积为1的公式为(\sum_{i为偶数} (C(num2, i)) * (2^(num1)) - 1
逆元前缀乘积 + 快速幂。时间复杂度O(n)
全部评论
第二题没必要上线段树,二分加差分就行
4 回复 分享
发布于 03-30 13:11 上海
太牛啦
1 回复 分享
发布于 03-30 14:58 江苏
ww问问这套题在大厂笔试里算难吗
点赞 回复 分享
发布于 03-30 11:47 上海
啊,我第三题用的动态规划,不知道咋初始化哎,...
点赞 回复 分享
发布于 03-30 12:00 辽宁

相关推荐

挣K存W养DOG:入职送金条全球游,路过缅甸停一下🐔
点赞 评论 收藏
分享
4 24 评论
分享
牛客网
牛客企业服务