我在Problem Solving with Algorithms and Data Structures进行了一次练习。练习说可以实现一个队列,其中enqueue和dequeue平均为O(1),并且当出队是O(n)时有一种情况。
我唯一能想到的是使用一个列表,其中列表的索引跟踪队列的前端(出队侧)。在该排队结尾(即,附加是O(1))并且出队通过复制当前“前”元素然后向前移动前索引跟踪器来进行操作。但这是大量的空间成本,并不是目标答案,因为两者总是O(1)。
对此有何想法?
答案 0 :(得分:1)
有很多方法可以实现队列并只使用O(n)空间。
How to implement a queue using two stacks?
C Program to Implement Queue Data Structure using Linked List
......我认为你不需要知道花费O(n)时间出列的实现。