【发布时间】:2010-12-15 02:06:42
【问题描述】:
说[a,b]表示从a到b的实线上的区间,a
给定一个区间列表 ([x1,y1],[x2,y2],...),找到所有与 [x,y] 重叠的区间的最有效方法是什么?
显然,我可以尝试每一个并在 O(n) 中得到它。但是我想知道是否可以以某种巧妙的方式对间隔列表进行排序,我可以通过二进制搜索在 O(log N) 中找到 /one/ 重叠项,然后从列表中的该位置“环顾四周”以找到所有重叠的间隔。但是,我如何对间隔进行排序以使这种策略有效?
请注意,列表项本身的元素之间可能存在重叠,这使得这很困难。
我已经尝试通过按左端、右端、中间对间隔进行排序,但似乎没有一个会导致详尽的搜索。
帮助?
【问题讨论】:
-
+1,因为它让我的工作日更加有趣。
标签: algorithm