import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();

    public void push(int node) {
        stack2.push(node);
    }

    public int pop() {
        if(stack1.empty()){
            while(!stack2.empty()){
                stack1.push(stack2.pop());
            }
        }
        return stack1.pop();
    }
}

我这是把每次读取把1的弹到2 然后取最底部的 然后又把 2 的弹回1 中

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() {
        int res = 0;
        while(stack1.size() != 1){
            int temp = stack1.pop();
            stack2.push(temp);
        }
        res = stack1.pop();

        while(stack2.size() != 0){
            int temp = stack2.pop();
            stack1.push(temp);
        }

        return res;
    }
}

其实 不用
只要判断 2 不为空 就可以一直弹2
2空了 再把1中的弹进来就好了

class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }

    int pop() {
        if (stack2.empty()) {
            while (!stack1.empty()) {
                stack2.push(stack1.top());
                stack1.pop();
            }
        }
        int ret = stack2.top();
        stack2.pop();
        return ret;
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};