问题:
- 队列的插入和删除遵循先入先出的原则,而堆栈遵循后进先出的原则。
- 用两个堆栈模拟队列,要求实现时不能分配超过O(1)的内存,时间复杂度必须是o(m)。
思路:
- 用两个堆栈模拟队列,必须要支持两种操作,enqueue和dequeue,前者在队列末尾加入一个元素,后者把队列头部的元素取出。
- 步骤一:通过enqueue连续将“12345”插入队列,这5个数在堆栈A中的排列是“12345”,即1在底部,5在顶部。
- 步骤二:调用dequeue操作将1取出,即将A中元素依次弹出,压入堆栈B,于是堆栈B队列中为“54321”,也就是5在底部,1在顶部,于是直接把B的顶部元素弹出即可。
class StackQueue:
def __init__(self):
self.