232. 用栈实现队列 
题目描述
只使用栈的标准操作实现先进先出队列,支持 push、pop、peek 和 empty。
题型判断
单个栈只能后进先出。把元素从一个栈倒入另一个栈会反转顺序,因此可以用两个栈组合出先进先出效果。
核心思路
inputStack:所有新元素都压入这里。outputStack:队头位于栈顶,从这里读取或弹出。- 只有
outputStack为空时,才把inputStack全部倒入其中。
不能每次读取都来回倒栈。输出栈非空时继续使用它,才能保证均摊 O(1)。
代码实现
复杂度与易错点
push:O(1)。pop、peek:均摊O(1);单次最坏O(n)。- 空间复杂度:
O(n)。 - 每个元素最多进入、离开两个栈各一次,因此一组操作的总搬运成本是线性的。
- 判断队列为空时必须同时检查两个栈。

