用于查询数字在哪个边界之间的算法

时间:2017-08-15 08:01:40

标签: algorithm math data-structures binary-search-tree

我试图查询一个数字所在的一组非重叠区间中的间隔。 我意识到已经有很多解决这个问题的方法,但我相信我的情况再次特殊而且有所不同。

我正在动态添加和删除边界,将间隔从负无穷大区分为正无穷大。这些部分中没有孔,即边界/间隔的集合是连续的。这意味着当删除边界时,将合并其下方和上方的部分。

边界不按特定顺序添加。请参阅下图以获得说明:

enter image description here

如果被查询的号码正好在边界上,我不关心它所属的哪个区域,并且想要返回其中任何一个区域。

查询数量可能比边界数量大得多或相当小。

一个朴素的算法将在O(n)中运行。假设在下一个查询完成之前,边界集将完全改变,这可能比使用二叉搜索树更快,我认为(?),但这似乎不是最佳解决方案。

是否有适合这种情况的算法?

0 个答案:

没有答案