剑指 Offer 09. 用两个栈实现队列
两个栈实现队列
class CQueue {
private Stack<Integer> stack1;
private Stack<Integer> stack2;
public CQueue() {
this.stack1 = new Stack<Integer>();
this.stack2 = new Stack<Integer>();
}
public void appendTail(int value) {
// 直接加入栈 1
stack1.add(value);
}
public int deleteHead() {
// 如果栈 2 为空,则把栈 1 的元素依次弹出放入栈二
if (stack2.empty()) {
while (!stack1.empty()) {
stack2.add(stack1.pop());
}
}
// 如果栈 2 为空,说明两个栈都为空了,返回 -1
if (stack2.isEmpty()) return -1;
return stack2.pop();
}
}