Data structures 是否有支持O(1)子序列删除和插入的数据结构
我一直在寻找一种优化字符串的方法,这样您可以比Θ(n)更快地删除字符串中的连续段,因为我将执行许多删除操作,并且我的代码在时间限制内。Data structures 是否有支持O(1)子序列删除和插入的数据结构,data-structures,Data Structures,我一直在寻找一种优化字符串的方法,这样您可以比Θ(n)更快地删除字符串中的连续段,因为我将执行许多删除操作,并且我的代码在时间限制内。 我尝试使用链表,因为您只需要更改节点中的“next”变量即可插入或删除段。 虽然这确实会导致O(1)删除、插入和删除,但我首先必须在Θ(n)时间内遍历链表,到达我要插入/删除的节点/索引。是否有修改过的版本,这样我就不必每次插入/删除链接列表? 如果没有这样的东西,我必须建立一个自定义的还是这些要求是不可能的?一个非常常见的数据结构称为Rope: < C+
我尝试使用链表,因为您只需要更改节点中的“next”变量即可插入或删除段。
虽然这确实会导致O(1)删除、插入和删除,但我首先必须在Θ(n)时间内遍历链表,到达我要插入/删除的节点/索引。是否有修改过的版本,这样我就不必每次插入/删除链接列表?
如果没有这样的东西,我必须建立一个自定义的还是这些要求是不可能的?一个非常常见的数据结构称为Rope:
< C++ >代码> STD::DEQu</代码>是另一个你可以从中汲取灵感的方法,虽然它可能不直接适用于它最常见的实现(API可能没有给你足够的控制,而块大小是不可配置的)。。但是,您可以使用in
O(logN)
来完成这两项工作。您将需要修改一点并使用隐式treap
我曾经用这个解决过类似的问题。你可以找到我的实现。如果您想使用,请根据您的需要进行更改