我正在寻找实现一个算法,给定一个整数数组和一个范围(区间)列表,在该数组中返回每个区间中不同元素的数量。也就是说,给定数组A和范围[i,j]返回集合{A [i],A [i + 1],...,A [j]}的大小。范围查询半群运算符(union)
很显然,天真的方法(从i到j迭代并忽略重复计数)太慢了。范围总和似乎不适用,因为AUB-B并不总是等于B.
我查了维基百科的范围查询,它暗示姚(82年)显示了一个算法,运算符(联合似乎是)具有线性预处理时间和空间以及几乎不变的查询时间。不幸的是,这篇文章无法自由获得。
编辑:看来这个确切的问题,请http://www.spoj.com/problems/DQUERY/
既然你有兴趣在实现算法,给大家讲讲您的数据和约束。你对你的输入有什么了解?阵列的大小有多大?你期望频繁分享端点的查询吗?你需要确切的答案或答案可以近似? 您是否需要任何明确的时间和/或空间性能保证? – naitoon