9.11 阿里国际笔试(工程岗)

第一题,电影的最大期待值。如果要每天都更新之前的电影到今天还有多少期待值,然后和今天的电影比,那就太麻烦了,可以把所有电影的期待值都推回到第一天,第i天的电影在第一天的期待值为ai+d*(i-1),然后用大顶堆记录,每次先更新再取堆顶即可,取出堆顶后减去d*(i-1)得到实际的期待值。这里不用考虑减去后小于0的问题,因为今天上映的电影的期待值是一定大于0的,也就是堆里面一定有一个大于0的元素。

第二题,使数组元素相等的最小次数。遍历所有元素,如果%x的值不相同(用set记录,判断size!=1),则返回-1;否则所有数除以x,因为除之后可以直接计算操作次数(除之前一次加减x,除之后一次加减1)。

这里直接说结论,把所有数组元素除x之后的结果排序,中间位置(第m*n/2个元素)就是要最终变成的数,用for循环计算操作次数即可。具体证明可以看力扣第462题,最小操作次数使数组元素相等 II。

第三题,dp+滚动数组优化过了60%。用dp[n+1][k]记录数量,具体来说,dp[i][j]表示长度为i、相邻字符不同的字符串有多少个,显然dp[i][j] = dp[i-1][j] + 25 * dp[i-1][j-1],最后结果为dp[n]的数组的和,转移过程和最后求和都需要注意取模。又显然dp[i]只与dp[i-1]有关,且n,k都是1e5级别的,所以可以用滚动数组进行优化。这个解法过了60%,超时。

正确的解法(感觉对但是没调出来)应该是,长度为n的数组有n-1个相邻字母对,相邻字母对不同的数量不超过k个,则枚举不同的相邻字母对的数量为0<=i<k。

对于确定的i,可能有C(n-1, i)种不同的选择方案,每个不同的字母对可以有25种选择,相同的字母对只能有一种选择,第一个字母有26种选择,因此每个i的总字符串数量应该有26*25^i*C(n-1, i)种,最终结果是前面这个的和。但是这种解法我没写出来,细节上估计有点问题,不知道有没有大佬过了。
全部评论
第三题那个解法是对的,注意快速幂里面要用long,被这个坑了
点赞 回复 分享
发布于 2023-09-11 21:44 北京

相关推荐

刚刷到字节跳动官方发的消息,确实被这波阵仗吓了一跳。在大家还在纠结今年行情是不是又“寒冬”的时候,字节直接甩出了史上规模最大的转正实习计划——ByteIntern。咱们直接看几个最硬的数,别被花里胡哨的宣传词绕晕了。首先是“量大”。全球招7000多人是什么概念?这几乎是把很多中型互联网公司的总人数都给招进来了。最关键的是,这次的资源分配非常精准:研发岗给了4800多个Offer,占比直接超过六成。说白了,字节今年还是要死磕技术,尤其是产品和AI领域,这对于咱们写代码的同学来说,绝对是今年最厚的一块肥肉。其次是大家最关心的“转正率”。官方直接白纸黑字写了:整体转正率超过50%。这意味着只要你进去了,不划水、正常干,每两个人里就有一个能直接拿校招Offer。对于2027届(2026年9月到2027年8月毕业)的同学来说,这不仅是实习,这简直就是通往大厂的快捷通道。不过,我也得泼盆冷水。坑位多,不代表门槛低。字节的实习面试出了名的爱考算法和工程实操,尤其是今年重点倾斜AI方向,如果你简历里有和AI相关的项目,优势还是有的。而且,转正率50%也意味着剩下那50%的人是陪跑的,进去之后的考核压力肯定不小。一句话总结:&nbsp;27届的兄弟们,别犹豫了。今年字节这是铁了心要抢提前批的人才,现在投递就是占坑。与其等到明年秋招去千军万马挤独木桥,不如现在进去先占个工位,把转正名额攥在手里。
喵_coding:别逗了 50%转正率 仔细想想 就是转正与不转正
字节7000实习来了,你...
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

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