【发布时间】:2020-08-15 03:21:04
【问题描述】:
我阅读了有关 Range Minimum Queries 的维基百科链接,查看了更多教程(topcoder 和其他链接),但我有一个非常基本的问题:
RMQ 的正式定义是: 给定一个从有序集合(例如数字)中提取的对象数组,一个 Range 最小查询(或 RMQ) from to 询问子数组中最小元素的位置。
我不明白的是,为什么我们不能通过线性搜索来解决问题? 在数组 A[0...n] 中,如果我们需要 RMQ(i,j)
min = A[i]
index = i
for iter=i; iter <j; iter ++
if A[iter] <= min
min = A[iter]
index = iter;
在循环结束时,我们知道最小值和最小值所在的索引。
我肯定在这里遗漏了一些东西......有人可以帮助我理解为什么我们需要 RMQ 吗?
【问题讨论】:
标签: algorithm graph binary-tree rmq