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()
     */
  • 相关阅读:
    Nodejs
    webpack与gulp的区别
    gulpjs
    Commonjs、AMD、CMD
    建造者模式
    工厂模式
    设计模式分类
    python的接口
    Python代码教你批量将PDF转为Word
    什么是“堆”,"栈","堆栈","队列",它们的区别?
  • 原文地址:https://www.cnblogs.com/lanpang9661/p/12563942.html
Copyright © 2011-2022 走看看