zoukankan      html  css  js  c++  java
  • 用两个栈实现队列

    2020-03-25
    用两个栈实现队列

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

    说明:
    • 1 <= values <= 10000
    • 你最多会对 appendTail、deleteHead 进行 10000 次调用
    示例:
    输入:

    ["CQueue","appendTail","deleteHead","deleteHead"]

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

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

    ["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]

    [[],[],[5],[2],[],[]]

    输出: [null,-1,null,null,5,2]
    题解:
    思路1: 基础栈
    左手倒右手。。。
     
    var CQueue = function () {
      this.inStack = [];
      this.outStack = [];
    };
    
    /** 
     * @param {number} value
     * @return {void}
     */
    CQueue.prototype.appendTail = function (value) {
      this.inStack.push(value);
    };
    
    /**
     * @return {number}
     */
    CQueue.prototype.deleteHead = function () {
      let { inStack, outStack } = this;
      if (outStack.length === 0) {
        if (inStack.length > 0) {
          while (inStack.length > 0) {
            outStack.push(inStack.pop());
          }
        } else {
          return -1;
        }
      }
      return outStack.pop();
    };
    
    /**
     * Your CQueue object will be instantiated and called as such:
     * var obj = new CQueue()
     * obj.appendTail(value)
     * var param_2 = obj.deleteHead()
     */
  • 相关阅读:
    gorm使用小结
    golang 输入输出
    nginx 命令和配置
    设计模式
    并发
    Java教程
    Spring实战
    第12章 高级数据结构及其实现
    第10章 算法设计技巧
    第9章 图论算法
  • 原文地址:https://www.cnblogs.com/lanpang9661/p/12563942.html
Copyright © 2011-2022 走看看