【发布时间】:2014-04-24 13:08:17
【问题描述】:
如果我有一个像堆栈一样的数据结构,我使用双向链表实现,我还添加了一个始终保持中间元素的指针。
我想通过添加一个 peekAt(k) 方法来修改它,该方法将返回第 K 个插入的元素,在 O(log(k)) 中。
任何想法我该怎么做?谢谢。
【问题讨论】:
标签: linked-list runtime time-complexity doubly-linked-list
如果我有一个像堆栈一样的数据结构,我使用双向链表实现,我还添加了一个始终保持中间元素的指针。
我想通过添加一个 peekAt(k) 方法来修改它,该方法将返回第 K 个插入的元素,在 O(log(k)) 中。
任何想法我该怎么做?谢谢。
【问题讨论】:
标签: linked-list runtime time-complexity doubly-linked-list
如果将其实现为double linked list,则无法在O(log(k)) 时间内返回k-th elementh,因为链表无法随机访问元素。我建议将您的堆栈实现为(dynamic) array,而不是您可以实现O(1) 访问的地方。
编辑:
如果您还想在任何地方快速insertion / deletion,那么我建议使用balanced binary tree。
【讨论】: