米哈游 9.24 java笔试

单选题和多选题难度还可以;
算法题第三道我还是卡在了双循环超时上
对于一个一维数组

有没有佬能指点一下,这种双循环该怎么优化以避免超时呢?
全部评论
就是算1*a[i-1]+2*a[i-2]+....+i-1*a[1]再乘上a[i]就可以啦
2 回复 分享
发布于 2023-09-24 22:06 安徽
可以把sum[i-1]和t[i-1]换成一个变量存储,也能节省一些空间 int n = in.nextInt(); int[] a = new int[n+1]; long[] sum = new int[n+1];//存前缀和 sum[0]=0; long[] t = new int[n+1]; t[0]=0; long res; for(int i=1;i<=n;i++){ a[i]=in.nextInt(); sum[i]=sum[i-1]+a[i]; t[i]=t[i-1]+sum[i-1]; long tmp = (t[i]*a[i])%1000000007; res = (res+tmp)%1000000007; }
1 回复 分享
发布于 2023-09-25 08:56 上海
开辟两个数组b和c,数组b遍历一次k*a[k]+b[k-1],数组c遍历一边a[k]+c[k-1],最后求和res+=a[k]*(b[k]-k*c[k]),应该是这么解的吧(还有些细节0应该手动初始化,k从1开始)
1 回复 分享
发布于 2023-09-24 23:07 四川
这样步步mod就可以保证不溢出了
1 回复 分享
发布于 2023-09-24 22:59 湖北
就是j*aj的和乘ai,然后因为每层计算前面的j会-1,所以每次计算前给他减掉i后面所有数的sum就出来了
1 回复 分享
发布于 2023-09-24 22:07 安徽
合并一下同类项就可以a1(a2+2a3+3a4+…)
1 回复 分享
发布于 2023-09-24 22:04 湖北
众安保险投了没,众安科技投了没,500强工资高,流程刚开始,保险公司可老有钱了~ https://app.mokahr.com/m/campus_apply/zhongan/71908?recommendCode=DS5jTXpa#/jobs
点赞 回复 分享
发布于 2023-09-25 10:10 上海
一样的循环 超时过20
点赞 回复 分享
发布于 2023-09-24 22:18 陕西
前缀和20%,改long long70%
点赞 回复 分享
发布于 2023-09-24 22:15 广东
只用单层循环即可,首先你需要记录前缀和。然后第二次计算的时候,需要有一个变量,每次只需要计算临时变量*arr【i】就行,这个临时变量每次循环后+第i个前缀和。
点赞 回复 分享
发布于 2023-09-24 22:13 北京
为啥我这种后缀和的方法不超时但是还是只能过20啊,result和result2我自验证是一样的
点赞 回复 分享
发布于 2023-09-24 22:08 湖北
我想出来了后缀和的方法,但是结果错误,不知道哪搞错了
点赞 回复 分享
发布于 2023-09-24 22:01 湖北
蹲,感觉是数学公式推导,能在O(n)算完
点赞 回复 分享
发布于 2023-09-24 22:01 江苏
试了分治还是超时...
点赞 回复 分享
发布于 2023-09-24 22:00 北京
蹲 我也是
点赞 回复 分享
发布于 2023-09-24 22:00 新加坡

相关推荐

投递腾讯等公司7个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-21 11:33
昨天是学校最后一场招聘会,鼠鼠去参加了,全场只有一个招聘java的岗位,上来先做一份笔试题,做完后他拿张纸对答案,然后开始问简历上的问题,深圳小厂,6-8k(题目如下),后面还有两轮面试。然后我就在招聘现场逛呀逛,看到有公司招聘电商运营,给的比上年的小厂还多,鼠鼠就去了解了下,然后hr跟鼠鼠要了份简历,虽然我的简历上面全是求职Java开发相关的内容,但是hr还是鼓励我说没关系,她帮我把简历给老板看看,下周一会给我通知。招聘会结束后鼠鼠想了一段时间,也和朋友聊了聊,发现我可能是不太适合这个方向,然后就跟爸爸说回家了给我发条微信,我有些话想跟他说说。晚上爸爸到家了,跟我发了条微信,我立马跑出图书馆跟他打起了电话,这个通话长达一个小时,主要是跟爸爸坦白说我不想找这行了,是你的儿子太没用了,想试试其他行业。然后爸爸也跟我说了很多,说他从来没有希望我毕业后就赚大钱的想法,找不到就回家去,回家了再慢慢找,实在找不到就跟他干(帮别人装修房子,个体户),他也知道工作不好找,让我不要那么焦虑,然后就是聊一些家常琐事。对于后面的求职者呢我有点建议想提一下,就是如果招实习的时间或者秋招开始,而你的简历又很差的情况下,不要说等做好项目填充完简历之后再投,那样就太晚了,建议先把熟悉的项目写上简历,然后边投边面边完善,求职是一个人进步的过程,本来就比别人慢,等到一切都准备好后再投岂不是黄花菜都凉了。时间够的话还是建议敲一遍代码,因为那样能让你加深一下对项目的理解,上面那些说法只是针对时间不够的情况。当然,这些建议可能没啥用,因为我只是一个loser,这些全是建立在我理想的情况下,有没有用还需其他人现身说法。上篇帖子没想到学校被人认了出来,为了不丢脸只能匿名处理了。
KPLACE:找研发类或技术类,主要还是要1.多投 2.多做准备,很多方面都要做准备 3.要有心理准备,投累了就休息一两天,再继续,要相信自己能找到
投递58到家等公司7个岗位
点赞 评论 收藏
分享
昨天 14:04
东北大学 C++
既然这样,为什么不点击就送呢
牛马88号:因为你合适。但有很多笔试就挂了、通过了再排序的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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