<分区>
Possible Duplicate:
Fast Algorithm to Quickly Find the Range a Number Belongs to in a Set of Ranges?
给定一个不重叠且排序的数字范围列表 (rangeList) 和一个数字,编写一个高效的算法首先查找该数字是否存在于(某个范围内)rangeList 中,如果存在,则返回正确的范围。
例如 rangeList = [(-1, 200), (300, 2000), (2011, 2300)]
查询 1:1000 -> (True, (300, 2000) ) 因为 1000 介于 300 和 2000 之间。
查询 2:250 -> (False, (None, None) ) 因为没有 250 在列表的任何范围内都不存在。
我想出的最好的算法是使用二进制搜索的 log N。这感觉像是一个非常普遍的问题,尤其是对于基于经度/纬度的搜索。有什么想法可以使它比 log N 更好吗?