【发布时间】:2013-05-04 09:22:33
【问题描述】:
我有一个未排序的数组。我有许多查询,其中我给出了一个范围(表示为两个数组索引),然后必须返回该范围的最大值(即,来自数组的指定切片)。 例如:
array[]={23,17,9,45,78,2,4,6,90,1};
query(both inclusive): 2 6
answer: 78
我构建了哪种算法或数据结构来快速检索任意范围的最大值。 (有很多查询)
编辑: 我正在使用 C++
【问题讨论】:
-
使用您正在使用的编程语言的内置
max()函数。这将是最快的。 -
@sudeepdino008 您使用的是哪种语言。
-
我会尝试将列表转换为
(index, value)元组列表,按value降序排序,然后在查询中迭代此列表并返回索引所在的第一个值在给定的范围内。但是,与整个列表相关的范围越小,这将变得越慢。对于较小的范围,在某些时候只线性查找最大值可能会更快。 -
哈哈。这是关于 codechef 的编程问题之一。 ww2.codechef.com/MAY13/problems/MSTICK那就需要使用这种数据结构
标签: c++ arrays algorithm sorting data-structures