我正在阅读算法第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. 给定一些整数范围,找到每个范围至少包含一个整数的最小集合
- 3. VBA:在其中一个范围内找到缺失的数字
- 4. 定位范围内的一个范围
- 5. 检查一个整数是否在一个范围内
- 6. 检查,如果一个整数范围内的其它范围JAVA
- 7. 在另一个范围内查找范围条件
- 8. 我有一个字母数字范围。我有一个数字,将在该范围内找到
- 9. 计数范围内的整数
- 10. 升压来,dynamic_bitset - 把一个整数值的范围内的位
- 11. 整数范围到矢量
- 12. 整数列表到范围
- 13. 将某个范围内的数字线性缩放到一个新范围
- 14. 如何从一个范围内的数字内插到另一个范围内的相应值?
- 15. 均匀分布在一个范围内的整数
- 16. PHP:多个唯一的随机整数在特定范围内
- 17. 在列'n'的范围内找到下一个高/低值
- 18. 在0到10的范围内找到一个数字的反义词
- 19. 在另一个范围内计算范围的出现次数
- 20. 如何在整数范围内找到不同的数字集数字?
- 21. 确定一个范围内的行数
- 22. excel vba,找到一个范围
- 23. wxpython如何找到一个wx.ListCtrl范围
- 24. 用“PS”找到一个时间范围
- 25. 在一个范围内计数倍数
- 26. 检测整数是否在多个有效整数范围内
- 27. 哪种算法可以找到数字范围内的空数字范围?
- 28. 如何使用rxjs发出一定范围的特定范围内的整数
- 29. 找到范围内的值sql
- 30. 寻找一个范围内的素数python
使用[哈希表](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