zoukankan      html  css  js  c++  java
  • 剑指offer[5]——用两个栈实现队列

    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

    我们先来了解一下什么是队列和栈。

    对队列的理解就像你在排队,排队只能从尾部进去,头部出去,你不能插队,只能按照规则来,遵循先进先出的原则。而栈不一样的是只有一个出入口,进去只能从尾部进去,出去也只能从尾部出去,这个时候你进去的早反而出去的比较晚,遵循先进后出的原则。

    题目的要求很简单,就是利用两个栈实现一个队列。我们就会想用一个栈来存储,另一个栈作为临时利用,就是说执行PUSH函数的时候和栈的PUSH是一样的,直接调用即可。但是POP的话就不太一样,队列是从栈底出去,所以这个时候就要求我们利用另一个栈,把存储栈中的元素依次POP到临时栈中,全部移过去之后再执行POP函数即可实现将栈底的元素弹出,代码如下:

    let arr1 = [];
    let arr2 = [];
    function push(node)
    {
        arr1.push(node);
    }
    function pop()
    {
        for(let i=0; i<arr1.length; i++){
            arr2.push(arr1[arr1.length-i-1]);
        }
        const num = arr2.pop();
        arr1 = [];
        for(let i=0; i<arr2.length; i++){
            arr1.push(arr2[arr2.length-i-1]);
        }
        arr2 = [];
        return num;
    }
    
    我不管,JS天下第一
  • 相关阅读:
    计算机中的那些缩写词
    Linux 下dns的搭建
    html中的定位
    编程基础之流程控制
    linux中kvm的安装及快照管理
    zabbix 中监控windows 的typepref中的值
    详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
    rhel7 单用户修改root密码
    Linux vim编辑器使用详解
    Linux下用ftp更新web内容!
  • 原文地址:https://www.cnblogs.com/Jacob98/p/12419234.html
Copyright © 2011-2022 走看看