题目信息
思路介绍
这道题简单难度,关键是联想到栈和队列的区别,栈——先进后出,队列——先进先出。
所以要想使用栈来模拟队列,我们可以想到使用两个栈不断地“倒腾”数据:
在添加元素到尾部的时候,若是栈一有元素,将全部元素压入栈二,然后再直接将元素压入栈二
在删除队列头部元素时,将栈二的元素全部出栈到栈一,此时栈一顶部元素就是队列头部元素
代码展示
class CQueue{
Stack<Integer> stack1;
Stack<Integer> stack2;
public CQueue() {
stack1 = new Stack<>();
stack2 = new Stack<>();
}
public void appendTail(int value) {
if(!stack1.isEmpty()){
while(!stack1.isEmpty()){
stack2.add(stack1.pop());
}
}
stack2.add(value);
}
public int deleteHead() {
if(!stack2.isEmpty()){
while(!stack2.isEmpty()){
stack1.add(stack2.pop());
}
return stack1.pop();
}
else{
if(stack1.isEmpty()){
return -1;
}
else{
return stack1.pop();
}
}
}
}