所有区间最值问题

这里有一种分治的做法。
考虑当前分治区间[L,R],区间中心为mid,我们需要解决的问题是求出所有跨越mid的区间的答案。
首先枚举右端点r(左端点也是一样的,这里只是举个栗子),对于所有左端点l和最大值(最小值),可能的情况有三种:
1、max(l,mid)>max(mid,r)
2、max(l,mid)=max(mid,r)
3、max(l,mid)<max(mid,r)
可以发现,这三种情况是分别连续的,且随着r的变化,这三种情况的分界点的变化也是单调的。
最小值同理。
根据这个性质就可以在O(n)的时间里求出所有跨越mid的区间的答案。
结合分治,就把问题解决了。
总复杂度O(nlogn)

全部评论

相关推荐

sagima:然后这个帖子又登上了
点赞 评论 收藏
分享
KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务