鉴于行区域的列表:寻找另一个数字之间的哪一对数字的优化方法?
regions = [(10,25), (18, 30), (45, 60), ...] # so on so forth, regions can be overlapping, of variable size, etc.
我想知道X点属于哪个国家和地区:
x = 23
find_regions(regions, x) # ==> [(10, 25), (18, 30)]
我天真地知道(和我目前的执行情况),我们可以只搜索在O(N),而是一个更生动的案例与成千上万的区域(的查找点千万,真的,是激励)都不能证明调查比这更快的方法:
regions = [(start, end) for (start, end) in regions if start < x and x < end]
我会冒险猜测有人已经在......之前解决了这个问题,但我不确定它是如何最好地完成的。思考?
为什么会'find_regions(区域中,x)'返回'[(10,20),(22,30)]'? – Bach
忘了将该示例更新为原始定义(18,30) – zaczap
我仍然不明白。 “23”属于“该地区(10,20)”的含义? – Bach