【问题标题】:Is there a data structure which can insert at an index in O(log n) time?是否有可以在 O(log n) 时间内插入索引的数据结构?
【发布时间】:2017-02-25 03:40:26
【问题描述】:

我正在寻找具有以下属性的数据结构:

  • 它包含元素,由连续的数字范围(例如,从 1 到 k)作为数组索引;

  • 通过索引访问元素尽可能快,希望O(1)操作;

  • 在给定索引处插入元素是 O(log n) 操作。

我知道堆中的插入操作是 O(log n) 但我不知道如何在这里使用堆。我认为可以基于树构建所需的数据结构,但我找不到任何东西。

【问题讨论】:

  • 树图是可能的,因为您可以在 O(log n) 时遍历整个树。这也可以包括在索引处插入。

标签: data-structures tree insert time-complexity


【解决方案1】:

您可以使用哈希表,因为您知道愤怒是 1,2 .... k 索引。

所以你需要实现一个散列函数,为每个元素分配一个唯一的索引。或者如果您有多个元素,那么您还需要注意哈希冲突,但根据您的问题规范使用哈希表要好得多。

所以访问将是 O(1) 和插入也是 O(1) 操作

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2020-04-24
    相关资源
    最近更新 更多