【发布时间】:2015-07-24 03:41:54
【问题描述】:
我有(a1, b1), (a2, b2), ...., (an, bn)形式的间隔。
我愿意支持以下操作
- 添加新间隔。
- 删除现有间隔。
- 给定一个点,找出所有不与该点重叠的区间。
如果我们想找到与点重叠的区间,区间树是直接的解决方案。如果我们想找到不相交的区间呢?
【问题讨论】:
-
“添加”和“删除”究竟是什么意思?应该将
(2,4)添加到(1,3)产生(1,3),(2,4)或(1,4)? -
@Oriol - 认为应该是
(1,3),(2,4) -
您可以在树中插入区间的补码:代替 [a,b],插入 [-inf,a] 和 [b,+inf]。确保保留原始间隔的标识。
标签: algorithm computational-geometry