可能重复:
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更好?
伟大的问题。我想不出任何更好的,不涉及硬编码散列函数。 – Cephron
谢谢。你能否详细说明硬编码哈希?你的意思是记忆吗? – GeneralBecos
类别。我会发布一个答案... – Cephron