队列的特点在于先进先出,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;
    }
}