剑指offer 09. 用两个栈实现队列
题目描述
解题思路
class CQueue {
private Stack<Integer> stk1, stk2;
public CQueue() {
stk1 = new Stack<>();
stk2 = new Stack<>();
}
public void appendTail(int value) {
stk1.push(value);
}
public int deleteHead() {
//如果stk2不空,则直接出队
if (!stk2.isEmpty()) {
return stk2.pop();
}
//如果stk2空,则先把stk1中的元素全部放到stk2中
while (!stk1.isEmpty()) {
stk2.push(stk1.pop());
}
return stk2.isEmpty() ? -1 : stk2.pop();
}
}
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/