zoukankan      html  css  js  c++  java
  • 【剑指offer】8.用两个栈实现队列

    8.用两个栈实现队列

    用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead
    ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

    示例 1:

    输入:

    [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”]

    [[],[3],[],[]]

    输出:[null,null,3,-1]

    th:用两个栈,一个栈push数据 另一个栈pop数据

    输入数据 1 2 3 push进inStack 为 3 2 1 在pop到outStack栈中 为1 2 3 和输入数据顺序一样、

    复杂度分析

    插入元素

    时间复杂度:O(1) 一次push操作
    空间复杂度:O(1) 一个存储空间

    删除元素

    时间复杂度:O(n) 数据从inStack到OutStack栈 loop一次。
    空间复杂度:O(n)

       /*
            * 用两个栈,一个栈push数据 另一个栈pop数据
            输入数据 1 2 3 push进inStack 为  3 2 1 在pop到outStack栈中 为1 2 3 和输入数据顺序一样、
            */
            Stack<Integer> in;
            Stack<Integer> out;
            public CQueue() {
                in = new Stack();
                out = new Stack();
            }
            
            public void appendTail(int value) {
                in.push(value);
            }
            
            public int deleteHead() {
                if(out.empty()){
                    while(!in.empty()){
                        out.push(in.pop());;
                    }
                }
        
                if(out.empty()){
                    return -1;
                }
        
                return out.pop();
            }
    
  • 相关阅读:
    Java内部类
    sql几种连接的区别
    常见的十大算法
    使用yml文件配置数据库数据时的问题
    SpringBoot整合Mybatis
    不是书评 :《我是一只IT小小鸟》
    考试考完了·
    MSSQL站库分离情况的渗透思路
    VENOM cve-2015-3456 Qemu 虚拟机逃逸漏洞POC
    Python 实现指定目录下 删除指定大小的文件
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860678.html
Copyright © 2011-2022 走看看