1. 本题知识点
队列、栈
2. 题目描述
用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 队列中的元素为 int 类型。
3. 解题思路
stack1 栈用来处理入栈(push)操作,stack2 栈用来处理出栈(pop)操作。一个元素进入 stack1 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 stack2 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。
4. 代码
public class Solution {
Deque<Integer> stack1 = new LinkedList<>();
Deque<Integer> stack2 = new LinkedList<>();
public void push(int node) {
// 元素进栈 stack1
stack1.push(node);
}
public int pop() {
// 当 stack2 为空时,将 stack1 的所有元素出栈,并进栈 stack2
if(stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}