优化一下,O(n)算法: 流程一样,数据结构上不用堆来找最小值了,因为我们每次找最小值是向右侧一直找到数组末尾,那只需要用一个数组记录一下每个位置上后缀数组的最小值就行。 算法流程开始前,先从前向后遍历得到前缀最大值数组,再从后向前遍历得到后缀最小值数组,顺便用hashtable记录每个值在数组中的下标(重复的时候记录最右边那个) 每次找数组最小值的时候,直接去找后缀最小值,如果它比之前已经归入非降数组部分的max还要小,那么它肯定由于之前的操作递增到了max非降,那最小值就是 max非降,否则就是后缀最小值里记录的那个值。后面操作完成,将左侧数组归入非降数组部分的时候,还要遍历左侧数组更新一下hashtable。 整个过程遍历数组3次,O(n)
点赞 评论

相关推荐

02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
牛客网
牛客企业服务