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()
     */
  • 相关阅读:
    自定义组件要加@click方法
    绑定样式
    647. Palindromic Substrings
    215. Kth Largest Element in an Array
    448. Find All Numbers Disappeared in an Array
    287. Find the Duplicate Number
    283. Move Zeroes
    234. Palindrome Linked List
    202. Happy Number
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/lanpang9661/p/12563942.html
Copyright © 2011-2022 走看看