只使用栈的标准操作实现先进先出队列,支持 push、pop、peek 和 empty。
单个栈只能后进先出。把元素从一个栈倒入另一个栈会反转顺序,因此可以用两个栈组合出先进先出效果。
inputStack:所有新元素都压入这里。outputStack:队头位于栈顶,从这里读取或弹出。outputStack 为空时,才把 inputStack 全部倒入其中。不能每次读取都来回倒栈。输出栈非空时继续使用它,才能保证均摊 O(1)。
push:O(1)。pop、peek:均摊 O(1);单次最坏 O(n)。O(n)。