【发布时间】:2013-08-26 20:22:49
【问题描述】:
假设我有一个长度为 L 的数组 A。我将得到 n 个区间 (i,j),我必须递增 A[i] 和 A[j] 之间的所有值。哪种数据结构最适合给定的操作?
间隔是预先知道的。
【问题讨论】:
-
视情况而定。您还计划支持哪些其他操作?
-
我需要数组 A 的最终值。
-
所以,您是说您希望能够存储一个元素数组,并能够 1) 将某个范围内的所有元素递增该值,以及 2) 查询数组中的任何元素?
-
循环遍历间隔;对于每个间隔,使用 for 循环递增间隔内的每个 Array 条目。如果数组访问过于“昂贵”,则从所有间隔中创建一个新的计数数组并仅访问 A 数组一次。
-
间隔可以重叠吗?如果是这样,您是否要在重叠中多次递增?
标签: algorithm data-structures range-query