c++ - 设置 + 第 n 个元素 : fast implementation

标签 c++ algorithm

对于以下数据结构:

  • 在 O(lg(n)) 中添加一个元素
  • 在 O(lg(n)) 中删除一个元素
  • 在 O(lg(n)) 中找到第 k 个元素

我们可以使用平衡 BST,其中每个节点都有其子树的大小,但它需要实现编码速度不快的红黑树。

有更好的解决方案吗?

最佳答案

您正在寻找的一般结构类型是用 IndexedIndexable 限定的,这是一种增加了计数的结构,能够通过索引访问元素。

您可以使用:

(也许还有其他一些 :p)

我倾向于认为 Skip-Lists 比 BST 更容易实现,因为您可以使用随机高度而不是所有平衡的东西。

关于c++ - 设置 + 第 n 个元素 : fast implementation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7619536/

相关文章:

c++ - GTK 滚动窗口 - 滚动到底部

algorithm - 最优子结构

ruby - 硬币变化递归哈希(解释)?

c++函数返回带偏移量的数组

c++ - 如何避免 C 和 C++ 中的命名空间冲突

c# - 使用数组进行独特行程选择的最佳性能算法?

php - 出现任何错误时停止并返回 Json 响应

c++ - 如何将 N x N 矩阵旋转 90 度?

c++ - 使用CMake将命令行参数传递给Visual Studio进行配置文件引导的优化

c++ - 关于cin函数到一个对象的所有public成员