我试图查询一个数字所在的一组非重叠区间中的间隔。 我意识到已经有很多解决这个问题的方法,但我相信我的情况再次特殊而且有所不同。
我正在动态添加和删除边界,将间隔从负无穷大区分为正无穷大。这些部分中没有孔,即边界/间隔的集合是连续的。这意味着当删除边界时,将合并其下方和上方的部分。
边界不按特定顺序添加。请参阅下图以获得说明:
如果被查询的号码正好在边界上,我不关心它所属的哪个区域,并且想要返回其中任何一个区域。
查询数量可能比边界数量大得多或相当小。
一个朴素的算法将在O(n)中运行。假设在下一个查询完成之前,边界集将完全改变,这可能比使用二叉搜索树更快,我认为(?),但这似乎不是最佳解决方案。
是否有适合这种情况的算法?