题目链接:https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&&tqId=11158&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

  思路:入队 - 所有元素加入stack1。出队 - 由于出队时是要删除第一个元素,也就是栈底元素,此时我们就可以启用stack2,将stack1中的元素全部push到stack2中,然后删除stack2的栈顶元素,最后将stack2中的元素全部push到stack1即可。(可以顺着这个思路考虑一下使用两个队列实现栈)

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() {
        while(stack1.size() > 0) {
            stack2.push(stack1.pop());
        }
        int val = stack2.pop();
        while(stack2.size() > 0) {
            stack1.push(stack2.pop());
        }
        return val;
    }
}