【问题标题】:What data structure for finding a point in a list of ranges?在范围列表中查找点的数据结构是什么?
【发布时间】:2016-05-02 04:03:38
【问题描述】:

我正在尝试为此用例找到正确的数据结构,但显然没有正确的搜索术语。

我有以下结构的许多副本:

struct Item {
  var start: Int
  var end: Int
  var type: Int
}

Item 中表示的范围不重叠且连续。

我需要能够:

  • 查询在给定的Int 索引中存在哪个Item
  • 从定位的Item 向前/向后走

Items 的集合将定期更新,可以是完整的重新构建,也可以是附加到末尾。中期收藏插页可能非常罕见,需要从头开始重建。

谁能给我指出一个合适的结构或正确的术语,让我继续研究自己?

【问题讨论】:

    标签: search data-structures collections range point


    【解决方案1】:

    如果项目不重叠且连续,则不需要结尾(因为它在下一次开始时暗示),您可以使用任何用于排序数据的数据结构,例如树或列表。

    在一般情况下(= 有重叠),您可能会使用 interval tree

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多