文件交换

图片缩略图

最小范围查询

在常量时间内查找数组中两个给定索引之间最小元素的位置。
5.0
1评级

1下载

更新2014年12月22日

查看许可协议

给定数组A[1…N],它查找具有两个给定索引之间的最小值的元素的位置。
它在常数时间内返回答案。RMQ问题可以用来在常量时间内恢复图中的lca(最低公共祖先)。看到http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor为更多的细节。
时间复杂度:O(N log(N))
空间复杂度:O(N log(N))
例子
A = [-1 5 0 3 -6 4 2 1 0 -1];
N =长度(一个);
M = rmq(一个);
求最小元素在下标i, j之间的位置
我= 2;
j = 6;
k = floor(log2(j - i + 1));
如果A(M(i,k+1)) <= A(M(j-2^k+1,k+1))
idx = M (i (k + 1);
其他的
idx = M (j2 ^ k + 1, k + 1);
结束

引用作为

乔治·Papachristoudis(2020)。最小范围查询(//www.tatmou.com/matlabcentral/fileexchange/48841-range-minimumquery), MATLAB中央文件交换。检索

意见及评分(1)

更新

1.1.0.0

我将标题改为更具描述性的标题并添加了一个图像。

MATLAB版本兼容性
创建R2014b
与任何版本兼容
平台的兼容性
窗户 macOS Linux
标签添加标签
rmq