思路:
两个栈,一个用来出队,另一个来入队;
只要辅助栈中有元素,那么在出队时就优先操作辅助栈中的元素;
当辅助栈为空时,将主栈中的元素转移到辅助栈中,再执行出队操作;
每次入队都操作主栈
import java.util.Stack;
public class Solution {
//主:push
Stack<Integer> stack1 = new Stack<Integer>();
//辅:pop
Stack<Integer> stack2 = new Stack<Integer>();
//队列:先进先出
public void push(int node) {
stack1.push(node);
}
//情况1:s2中还有元素; 情况2:s2中没有元素
public int pop() {
//情况1:s2中还有元素;
if(stack2.size() > 0) return stack2.pop();
//情况2:s2中没有元素
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
int res = stack2.pop();
return res;
}
}