所有区间最值问题

这里有一种分治的做法。
考虑当前分治区间[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)

全部评论

相关推荐

12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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