【发布时间】:2017-04-30 11:20:00
【问题描述】:
我一直在研究许多编码面试问题中的一些问题。 我想知道在 Python 中使用两个堆栈实现一个队列。我正在研究算法问题以实现具有两个堆栈的队列,以了解这两种数据结构。 我有以下内容:
class QueueTwoStacks:
def __init__(self):
self.in_stack = []
self.out_stack = []
def enqueue(self, item):
self.in_stack.append(item)
def dequeue(self):
if len(self.out_stack) == 0:
# Move items from in_stack to out_stack, reversing order
while len(self.in_stack) > 0:
newest_in_stack_item = self.in_stack.pop()
self.out_stack.append(newest_in_stack_item)
# If out_stack is still empty, raise an error
if len(self.out_stack) == 0:
raise IndexError("Can't dequeue from empty queue!")
return self.out_stack.pop()
这个的运行时分析是什么?
为什么我们可以为 mm 函数调用获得 O(m)O(m) 运行时是真的。
我是否假设有一个堆栈实现并且它给了 O(1)O(1) 时间推送和弹出?
感谢您对此的解释。谢谢。
【问题讨论】: