请问今天阿里后端笔试的第三题咋做

第三题是:
给定一个长度n的数组,每次可以选择一个数x 让这个数组中所有的x都变成x+1,问你最少的操作次数,使得这个数组变成一个非降数组
输入:n 代表数组长度;数组信息
数据量  n <= 3 * 10^5 ?(不确定), 每一个数据长度 ai <= 10^9
输出:最小操作次数

例如
输入:[2, 5, 3, 4, 9, 7]
输出:4

3 => 4 [2, 5, 4, 4, 9, 7]
4 => 5 [2, 5, 5, 5, 9, 7]
7 => 8 => 9 [2, 5, 5, 5, 9,  9]
一共四次
不会做 求思路
#阿里笔试#
全部评论
比如,你来到8,已知8的右边最小值是5,如下 …8…5… 你就知道,5这个数是一定要增长到8才行的。5 -> 8,增长3次。 我们用线段树,5…7范围上,都设置成1!注意!不是+1,是线段树里update操作!不是add操作! 表示: 所有的5肯定都要变的(线段树里5位置+1,表示关于5要操作一次) 所有的6肯定都要变的(线段树里6位置+1,表示关于6要操作一次) 所有的7肯定都要变的(线段树里7位置+1,表示关于7要操作一次) 然后,假设你接下来,来到7,7的右边最小值还是5,如下: …8 7…5… 我们用线段树,5…6范围上,都设置成1!你会发现,其实没啥变化,因为之前5…7范围都已经设置成1了。 这正好是我们要的效果! 然后,假设你接下来,来到9,9的右边最小值还是5,如下: …8 7 9…5… 我们用线段树,5…8范围上,都设置成1!你会发现,其实只在8位置上变化了,因为之前5…7范围上,都已经设置成1了。 最后你看看线段树里,总体累加和是多少就可以了。 再举个例子: 13 6 30 19 你来到13,发现右边最小值是6,于是线段树6…12范围,都设置成1 你来到6,发现右边最小值>=6,于是线段树什么也不做。 你来到30,发现右边最小值是19,于是线段树19…29范围,都设置成1 你来到19,线段树什么也不做。 最终,线段树里,只有6…12、19…29范围上有1,所以线段树整体累加和是18。就是我们要的答案。 因为值在10^9范围,所以用开点线段树,或者,用线段树离散化处理。都可以。 最小值这个信息可以用预处理数组。 时间复杂度O(N * log N)
1 回复 分享
发布于 2022-09-27 10:28 四川
我写了一个,可以看下,可惜考试的答的很烂
1 回复 分享
发布于 2022-09-27 00:10 浙江
同学同花顺尝试一下吗,面试简单不造火箭,可保姆式全程跟进度,我帖子有内推
点赞 回复 分享
发布于 2022-09-27 09:34 浙江
第二题咋做?
点赞 回复 分享
发布于 2022-09-27 08:49 上海
群里大佬说的:可以先找到一个单增子序列比如[2, 5, 3, 4, 9, 7] 就可以找到[2, 5, 9] 然后每一个都可以看做一个子区间的最大值,比如 2是[2]的最大值,5是[5, 3, 4]的最大值,9是[9, 7]的最大值,并获得这样的每个子区间的最小值,就可以得到多个闭区间 [最小值, 最大值],比如这里就可以得到[2, 2] [3, 5] [7, 9] 合并这些区间,(这个样例不用合并),合并后得到每个区间长度的和,比如这里就是5 -3 + 9 - 7 = 4,就是最后的结果
点赞 回复 分享
发布于 2022-09-26 23:47 北京
最大值减最小值就行了吧
点赞 回复 分享
发布于 2022-09-26 23:41 江苏

相关推荐

老粉都知道小猪猪我很久没更新了,因为秋招非常非常不顺利,emo了三个月了,接下来说一下我的情况吧本人是双非本&nbsp;专业是完全不着计算机边的非科班,比较有优势的是有两段大厂实习,美团和字节。秋招面了50+场泡池子泡死的:滴滴&nbsp;快手&nbsp;去哪儿&nbsp;小鹏汽车&nbsp;不知名的一两个小厂其中字节13场&nbsp;两次3面挂&nbsp;两次2面挂&nbsp;一次一面挂其中有2场面试题没写出来,其他的都是全a,但该挂还是挂,第三次三面才面进去字节,秋招加暑期总共面了22次字节,在字节的面评可以出成书了快手面了8场,2次实习的,通过了但没去,一次2面挂&nbsp;最后一次到录用评估&nbsp;至今无消息滴滴三面完&nbsp;没几天挂了&nbsp;所有技术面找不出2个问题是我回答不上来的,三面还来说我去过字节,应该不会考虑滴滴吧,直接给我干傻了去哪儿一天速通&nbsp;至今无消息小鹏汽车hr&nbsp;至今无消息美团2面挂&nbsp;然后不捞我了,三个志愿全部结束,估计被卡学历了虾皮二面挂&nbsp;这个是我菜,面试官太牛逼了拼多多二面挂&nbsp;3道题也全写了&nbsp;也没问题是回答不出来的&nbsp;泡一周后挂腾讯面了5次&nbsp;一次2面挂&nbsp;三次一面挂,我宣布腾讯是世界上最难进的互联网公司然后还有一些零零散散的中小厂,但是数量比较少,约面大多数都是大厂。整体的战况非常惨烈,面试机会少,就算面过了也需要和各路神仙横向对比,很多次我都是那个被比下去的人,不过这也正常,毕竟谁会放着一个985的硕士不招,反而去招一个双非读化学的小子感觉现在互联网对学历的要求越来越高了,不仅仅要985还要硕士了,双非几乎没啥生存空间了,我感觉未来几年双非想要进大厂开发的难度应该直线上升了,唯一的打法还是从大二刷实习,然后苟个转正,不然要是去秋招大概率是炮灰。而且就我面字节这么多次,已经开始问很多ai的东西了,你一破本科生要是没实习没科研懂什么ai啊,纯纯白给了
不知名牛友_:爸爸
秋招你被哪家公司挂了?
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

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