【问题标题】:Improving data structure改进数据结构
【发布时间】:2014-04-24 13:08:17
【问题描述】:

如果我有一个像堆栈一样的数据结构,我使用双向链表实现,我还添加了一个始终保持中间元素的指针。

我想通过添加一个 peekAt(k) 方法来修改它,该方法将返回第 K 个插入的元素,在 O(log(k)) 中。

任何想法我该怎么做?谢谢。

【问题讨论】:

    标签: linked-list runtime time-complexity doubly-linked-list


    【解决方案1】:

    如果将其实现为double linked list,则无法在O(log(k)) 时间内返回k-th elementh,因为链表无法随机访问元素。我建议将您的堆栈实现为(dynamic) array,而不是您可以实现O(1) 访问的地方。

    编辑:

    如果您还想在任何地方快速insertion / deletion,那么我建议使用balanced binary tree

    【讨论】:

    • 插入和删除必须在 O(1) 中,这对于动态数组是不可能的。
    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多