c++ - 范围内的最低值

标签 c++ arrays algorithm minimum

我想找到某个范围内的最低值。
是每次都要遍历数组还是有什么动态方法?

假设我有输入数组:

index: 0 1 2 3 4 5 6 7
value: 1 4 6 1 6 7 2 3

然后我必须选择 (含)范围内的最小值。例如:

min(0,7) = 1
min(0,2) = 1
min(4,6) = 2
min(1,2) = 4

我对最快的解决方案感兴趣,最好在恒定时间内获得结果。

Array 不会同时改变。

最佳答案

如果您要对同一组数字执行多个查询,那么您需要构造一个 Cartesian Tree .

Cartesian trees may be used as part of an efficient data structure for range minimum queries, a range searching problem involving queries that ask for the minimum value in a contiguous subsequence of the original sequence.

正如文章所说,查询可以在恒定时间内执行。

关于c++ - 范围内的最低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756489/

相关文章:

C++如何确保在使用虚拟继承时调用继承函数而不是基函数

php - MySQL => PHP 关联数组...理解 undefined variable 错误

c# - 将算法应用于多个文件

algorithm - 为此使用图论编写算法

c++ - 两个 C++ 应用程序在 Linux 上共享一个只读内存区域

c++ - 让编译器为 std::function 生成一个空的默认函数

c++ - 使用 SFINAE 选择 friend 或基类 c++x03

javascript - 带有嵌套数组的微模板

arrays - 在一组 {0......2^k -1} 范围内找到缺失的数字

算法递归公式计算