RMQ问题(区间最值查询)

来源:互联网 发布:java 新闻管理 编辑:程序博客网 时间:2024/05/18 18:01

有一类问题被称作区间最值问题,描述的是,给定 n 个元素,需要查询下标位于 p , q 之间的最大/小值。

首先确定,针对每一次查询,肯定是不能动态求最值的,因为每次都要计算,可能造成比较多的时间耗费。

有 一种比较好的解决办法是,先得到所有结果,在查询时直接取出结果。这样,就需要一种数据结构,能够覆盖所有查询并且能快速索引。

用一个二维数组保存中间结果, RMQ[n][i],每一个元素表示:第 i 个元素到 i + 2 ^ n 个元素之间的最大值。这样,我们将算法分成两个部分,一个是初始化,一个是查询,算法如下所示:


0 0
原创粉丝点击