每个元素小于某个特定数字的子数组的总和

Posted

技术标签:

【中文标题】每个元素小于某个特定数字的子数组的总和【英文标题】:sum of a subarray where each element is less than some specific number 【发布时间】:2017-07-14 17:43:56 【问题描述】:

我有一个未排序的 n 个元素的数组,现在查询 q 以 l,r,t 的形式出现,其中 l

n

q

ai(数组元素)

t

解决这个问题最有效的数据结构是什么?

【问题讨论】:

到目前为止你做了什么? 可能是std:: vector 尝试使用归并排序树,但复杂度仍然很高 francois,对不起,应该是 t How to effectively answer range queries in an array of integers?的可能重复 【参考方案1】:

最有效的数据结构是稀疏表(O(nlogn) 构建时间和 O(1) 查询时间)或分段树(O(n) 构建时间和 O(logn) 查询时间)。

【讨论】:

以上是关于每个元素小于某个特定数字的子数组的总和的主要内容,如果未能解决你的问题,请参考以下文章

数组560. 和为K的子数组

数字总和可被 K 整除的子数组的数量

2607. 使子数组元素和相等

c_cpp 最大子阵列总和。在具有最大总和的数组(包含至少一个数字)中查找连续的子数组。

如何在 O(nlogn) 中找到总和最接近零或某个值 t 的子数组

根据子数组的位置和数组的第一个元素计算子数组元素的总和