鑑於行區域的列表:尋找另一個數字之間的哪一對數字的優化方法?
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