【发布时间】:2014-06-11 00:21:51
【问题描述】:
我被要求设计一个数据结构,它的作用就像一个堆栈,大小不受限制,它将支持以下方法,并具有给定的运行时限制。
push(s) - 将 s 推送到数据结构 - O(1)
pop() - 移除并返回最后插入的元素 O(1)
middle() - 按插入顺序返回索引为 n/2 的元素(不删除),其中 n 是当前数量数据结构中的元素。 - O(1)
peekAt(k) - 按插入顺序返回第k个元素(栈底为k=1) - O (log(k))
我曾想过使用链表,并始终保留一个指向中间元素的指针,但后来我在实现 peekAt(k) 时遇到了问题。任何想法我该如何实现?
【问题讨论】:
-
@Codor "我想用链表" ... ?
标签: algorithm data-structures stack runtime time-complexity