用两个栈实现队列
用两个栈实现队列
https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&tqId=11158&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey
class CQueue {
Stack<Integer> A;
Stack<Integer> B;
public CQueue() {
A = new Stack<>();
B = new Stack<>();
}
//入队
public void appendTail(int value) {
B.push(value);
}
//出队
// 栈B存的是队列的倒序 所以出队时候要将其转到栈A,这样栈A才是正序的
public int deleteHead() {
if(A.isEmpty() && B.isEmpty()) //当AB都为空则队列为空
return -1;
if(A.isEmpty()){ //当A为空,将B中的转换过来
while(!B.isEmpty()){
A.push(B.pop());
}
}
return A.pop(); //栈A的栈顶出栈就是队列的头部出队
}
}
剑指offer 文章被收录于专栏
为刷过的每一道题都书写一篇题解,便于重复练习~


查看1道真题和解析