我正在閱讀算法第3版的介紹,我遇到了以下情況:假設我們給出n個整數,範圍爲0到k,我們想知道這些整數有多少在給定整數a和b的範圍[a,b]中。它具有暴力解決方案,但是它說,通過輸入的預處理階段,這個查詢可以在Θ(1)時間內完成,並且這個處理階段花費O(n + k)時間。我在考慮對整數進行排序,但排序至少需要O(nlogn)時間,超過O(n + k)。預處理階段可以做些什麼?謝謝找到一個範圍內的整數
1
A
回答
4
由於數字在範圍[0,k]中,您可以使用計數排序在O(n + k)時間對它們進行排序。
一旦你有了計數,你可以獲得該計數數組的前綴總和,它會告訴你在[0,a]範圍內的數字個數。 O(k)時間。
使用它你可以在O(1)時間內取適當的差異來回答[a,b]的查詢。
相關問題
- 1. 查找範圍內整數的數量
- 2. 找到一個範圍內的值:Matlab
- 3. 找到一個範圍內的子集
- 4. 找到一個範圍內的值
- 5. 蟒,找到其中多個屬於一個範圍,範圍是從整數
- 6. 給定一些整數範圍,找到每個範圍至少包含一個整數的最小集合
- 7. 找到一個數字的範圍
- 8. 整數範圍內的整數
- 9. 找到一個範圍內的自我產品的數量
- 10. 如何在數組範圍內找到一個數字
- 11. VBA:在其中一個範圍內找到缺失的數字
- 12. 定位範圍內的一個範圍
- 13. 比較一個範圍內的每個整數的值
- 14. 每天在一個範圍內生成一個隨機整數
- 15. 檢查一個整數是否在一個範圍內
- 16. 檢查,如果一個整數範圍內的其它範圍JAVA
- 17. 在另一個範圍內找到一個地理點 - SQL Server
- 18. 在另一個範圍內查找範圍條件
- 19. 我有一個字母數字範圍。我有一個數字,將在該範圍內找到
- 20. 如何使用SQL查找範圍在另一個範圍內的天數
- 21. 計數範圍內的整數
- 22. 升壓來,dynamic_bitset - 把一個整數值的範圍內的位
- 23. 在不包含在另一個範圍內的範圍內找到第一個元素
- 24. 查找特定範圍內整數的出現次數
- 25. 整數列表到範圍
- 26. 整數範圍到矢量
- 27. 將某個範圍內的數字線性縮放到一個新範圍
- 28. 如何從一個範圍內的數字內插到另一個範圍內的相應值?
- 29. HLSL/GLSL查找整數的範圍
- 30. 檢查一個整數是否在data.table的特定範圍內?
使用[哈希表](http://stackoverflow.com/questions/5586200/algorithm-find-count-of-numbers-within-a-given-range)。它將是O(1)。 – 2013-03-15 10:07:53
算法書的作者?當引用一本書時,陳述作者。 – AlexWien 2013-03-15 10:12:11