队列的特点在于先进先出,push操作直接存入stack1即可;但此时前面放入栈中的数位于栈底,只靠单一栈是无法从底部取数以达到FIFO的。我们的第二个栈就派上用场了,遇到pop操作,把stack1里的数一个个先弹出再放进stack2里,就实现了元素倒置,最先放入栈中的数又被转移到了栈顶。但是注意!不是遇到pop就要清空转移,当stack2不为空时,继续返回stack2的栈顶元素。可以自己举个简单的例子就能理解
import java.util.*;
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
if (!stack2.empty()) {
int res = stack2.peek();
stack2.pop();
return res;
}
while (!stack1.empty()) {
int temp = stack1.peek();
stack2.push(temp);
stack1.pop();
}
if (!stack2.empty()) {
int res = stack2.peek();
stack2.pop();
return res;
}
return 0;
}
}