【发布时间】:2013-02-23 21:30:36
【问题描述】:
我有一个排序的整数数组:
{1,2,4,4,5,8,12,15,15,23,54}
我想找出该数组中有多少个数字落在一个范围内,比如 4 到 15。
{4,4,5,6,12,15,15}
因此,数组中有 7 个项目在该范围内。
我需要在 O(log(N)) 时间内执行此操作,并且我认为我可以使用二进制搜索,但由于重复,无法找到下限和上限。
如何在 O(log(N)) 时间内完成?
我想过从前面循环,然后从末端循环,但这可能最多 O(N)
【问题讨论】:
-
您搜索起始元素的索引 - 0.5,搜索结束元素的索引 + 0.5。结果是 [start, end - 1]
-
但这些都是整数
-
但是将浮点数或双精度数与整数进行比较没有问题
-
该死!这确实有效。也很简单。谢谢。如果您想将其作为实际答案发布,我会将其标记为正确。
-
发布您自己的解决方案并将其标记为已接受,以帮助发现您问题的其他人。
标签: java arrays search binary-search