栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

剑指 Offer 09. 用两个栈实现队列

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指 Offer 09. 用两个栈实现队列

https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/

Java代码
class CQueue {

    //两个栈,一个出栈,一个入栈
    private Stack stack1;
    private Stack stack2;

    public CQueue() {
        //栈初始化
        stack1 = new Stack();
        stack2 = new Stack();
    }
    
    public void appendTail(int value) {
        stack1.push(value);
    }
    
    public int deleteHead() {
        //如果stack2不为空,直接出
        if(!stack2.isEmpty()){
            return stack2.pop();
        }else{
        //否则如果stack1不为空,把入栈中的元素都搬到出栈中 
        //一层While,空间复杂度O(n)
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());  
            }
            //如果搬完stack1的元素以后出栈还是为空,则没有元素,返回-1。否则返回出栈栈顶元素
            return stack2.isEmpty()? -1:stack2.pop();
        }
    }
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778795.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号