用两个栈实现队列

用两个栈实现队列

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 文章被收录于专栏

为刷过的每一道题都书写一篇题解,便于重复练习~

全部评论

相关推荐

点赞 评论 收藏
分享
自来熟的放鸽子能手面...:这个不一定,找hr跟进一下
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务