我正在尋找實現一個算法,給定一個整數數組和一個範圍(區間)列表,在該數組中返回每個區間中不同元素的數量。也就是說,給定數組A和範圍[i,j]返回集合{A [i],A [i + 1],...,A [j]}的大小。範圍查詢半羣運算符(union)
很顯然,天真的方法(從i到j迭代並忽略重複計數)太慢了。範圍總和似乎不適用,因爲AUB-B並不總是等於B.
我查了維基百科的範圍查詢,它暗示姚(82年)顯示了一個算法,運算符(聯合似乎是)具有線性預處理時間和空間以及幾乎不變的查詢時間。不幸的是,這篇文章無法自由獲得。
編輯:看來這個確切的問題,請http://www.spoj.com/problems/DQUERY/
既然你有興趣在實現算法,給大家講講您的數據和約束。你對你的輸入有什麼瞭解?陣列的大小有多大?你期望頻繁分享端點的查詢嗎?你需要確切的答案或答案可以近似? 您是否需要任何明確的時間和/或空間性能保證? – naitoon