Data structures 是否有支持O(1)子序列删除和插入的数据结构

Data structures 是否有支持O(1)子序列删除和插入的数据结构,data-structures,Data Structures,我一直在寻找一种优化字符串的方法,这样您可以比Θ(n)更快地删除字符串中的连续段,因为我将执行许多删除操作,并且我的代码在时间限制内。 我尝试使用链表,因为您只需要更改节点中的“next”变量即可插入或删除段。 虽然这确实会导致O(1)删除、插入和删除,但我首先必须在Θ(n)时间内遍历链表,到达我要插入/删除的节点/索引。是否有修改过的版本,这样我就不必每次插入/删除链接列表? 如果没有这样的东西,我必须建立一个自定义的还是这些要求是不可能的?一个非常常见的数据结构称为Rope: < C+

我一直在寻找一种优化字符串的方法,这样您可以比Θ(n)更快地删除字符串中的连续段,因为我将执行许多删除操作,并且我的代码在时间限制内。

我尝试使用链表,因为您只需要更改节点中的“next”变量即可插入或删除段。

虽然这确实会导致O(1)删除、插入和删除,但我首先必须在Θ(n)时间内遍历链表,到达我要插入/删除的节点/索引。是否有修改过的版本,这样我就不必每次插入/删除链接列表?


如果没有这样的东西,我必须建立一个自定义的还是这些要求是不可能的?

一个非常常见的数据结构称为Rope:


< C++ >代码> STD::DEQu</代码>是另一个你可以从中汲取灵感的方法,虽然它可能不直接适用于它最常见的实现(API可能没有给你足够的控制,而块大小是不可配置的)。。但是,您可以使用in
O(logN)
来完成这两项工作。您将需要修改一点并使用隐式treap

我曾经用这个解决过类似的问题。你可以找到我的实现。如果您想使用,请根据您的需要进行更改