剑指 Offer 09
一个栈用处理进队操作,一个用于出队列操作;
当stack2为空,并且接下来是出队列操作时,需要将stack1所有的元素统统打入stack2
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/
class CQueue {
//方式1:栈1入队列,栈2出队列
private Stack<Integer> stack1;
private Stack<Integer> stack2;
public CQueue(){
stack1 = new Stack<>();
stack2 = new Stack<>();
}
public void appendTail(int value){
stack1.push(value);
}
public int deleteHead(){
if(!stack2.isEmpty()){
return stack2.pop();
}else{
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
return stack2.isEmpty()?-1:stack2.pop();
}
}
}
比任何人都要努力