查找给定开始和结束时间的并发事件数

Sno*_*all 8 language-agnostic algorithm computational-geometry data-structures

我有一系列(~10 9)事件,其特点是开始和结束时间.有一段时间,我想知道当时正在进行的事件有多少.

在这种情况下,哪种数据结构会有所帮助?我需要快速的操作是:

  1. 插入新事件,例如{start: 100000 milliseconds, end: 100010 milliseconds}.
  2. 查询给定时间的并发事件数.

更新:有人在这上面放了一个计算几何标志,所以我想我应该用计算几何来改写它.我有一组1维间隔,我想计算这些间隔中有多少与给定点相交.插入新的间隔必须很快.

tsk*_*zzy 8

你正在寻找间隔树.

  • 构造:O(n log n),n间隔的数量在哪里
  • 查询:O(m+log n),m查询结果的数量在哪里,是n间隔的数量
  • 空间: O(n)