我需要一个可以在 log(n) 中执行以下三个查询的数据结构,其中 n 是数字范围。
- insert(a,b) : 插入区间 [a,b]。
- count(x) : 计算包含点 x 的区间数。
- remove(a,b) : 从区间集合中移除区间 [a,b]。
我遇到了区间树,它在 C++ 中的实现需要使用红黑树。我试图避免从头开始制作树,有没有办法可以像实现 c++ stl<map>
或<set>
执行这些操作?
编辑我意识到,由于我只需要包含一个点的间隔计数,因此我使用了二叉索引树,它的实现很简单,并且在 O(log(n)) 时间内执行上述查询。