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

第一次提交: 部分案例没通过,代码是这样的:

// 创建两个栈
var stackOne = [];
var stackTwo = [];function push(node)
{// write code here// 入栈stackOne.push(node);}
function pop()
{// write code here// while(stackOne.length){stackTwo.push(stackOne.pop());  // }// 循环完成之后,stackTwo栈顶的元素就是队列需要pop出来的元素return stackTwo.pop();}


按照上面的代码发现, 我在push4的时候, 第二个栈里面还有数据3,这个时候也满足while条件如果将第一个栈里面的数据直接push到第二个栈中的话,数据3就会被压在底部了,而再执行pop的时候,pop出来的时候是4而不是3。所以,需要添加一个判断条件,只有当第二个栈里面没有数据的时候才需要重新执行while循环体,如果有数据,就需要先把里面的数据pop出来,这样的话pop操作得到数据才是队列从队头一次pop出来的数据。

修改后应该是这样的:

// 创建两个栈
var stackOne = [];
var stackTwo = [];function push(node)
{// write code here// 入栈stackOne.push(node);}
function pop()
{// write code here// 如果stackTwo是空的就进行该操作if(!stackTwo.length){// 不断将stackOne中的数据弹出到stackTwo中while(stackOne.length){stackTwo.push(stackOne.pop());  // }}// 循环完成之后,stackTwo栈顶的元素就是队列需要pop出来的元素return stackTwo.pop();}

06-用两个栈实现队列相关推荐

  1. 剑指offer:面试题09. 用两个栈实现队列

    题目:用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有 ...

  2. 剑指offer_第5题_用两个栈实现队列

    题目描述 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 理解 关于栈 什么是栈 栈的抽象数据类型 Python实现栈 关于队列 什么是队列 队列抽象数据类型 Pyt ...

  3. 《LeetCode力扣练习》剑指 Offer 09. 用两个栈实现队列 Java

    <LeetCode力扣练习>剑指 Offer 09. 用两个栈实现队列 Java 一.资源 题目: 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 de ...

  4. 剑指Offer #05 用两个栈实现队列(模拟)

    题目来源:牛客网-剑指Offer专题 题目地址:用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 题目解析 首先,我们需要知道一下基本知 ...

  5. 【干货】容器适配器实现两个栈模拟队列

    用两个栈模拟队列的思想就是"倒水思想",这里我们用自定义类型模拟出线性表,再用线性表做容器实现栈的数据结构,最后用栈来实现队列,代码如下: #include<iostream ...

  6. 剑指offer第二版-9.用两个栈实现队列

    描述:使用两个栈实现一个队列.队列中实现尾部插入和头部删除函数. 思路:stack1负责插入,stack2负责弹出,如果stack2为空了,将stack1的元素依次弹出并存放到stack2中,之后对s ...

  7. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  8. 《剑指offer》第九题(用两个栈实现队列)

    // 面试题:用两个栈实现队列 // 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail // 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的 ...

  9. 栈一:用两个栈实现队列

    /**  * 题目:用两个栈实现队列  * 描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.  * 解决方案:方法一:一个作为存储用,一个作为弹出用  * * ...

  10. java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)

    DailyChallenge 剑指 Offer 09. 用两个栈实现队列 Easy20200630 Description 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTai ...

最新文章

  1. JDBC操作数据库实例
  2. 2010年5月blog汇总:OpenExpressApp、其他
  3. TortoiseGit 连接oschina不用每次输入username和password的方法
  4. AVL树C++实现(插入,删除,查找,清空,遍历操作)
  5. 弹性服务器怎么上传文件,上传哪个文件夹弹性云服务器
  6. python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法
  7. VTK:可视化算法之ContourQuadric
  8. Django(part28)--F对象
  9. reids mysql 面试_月薪3k的后端面试点-Mysql和Redis
  10. 关于下载(前后端)第1部分
  11. Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
  12. 点云数据增强及预处理
  13. java开发的格式与书写规范
  14. 魔兽同服务器物品,《魔兽世界》怀旧服:这是给你的转服物资必备清单
  15. MySQL -> DML:删除(delete),(truncate table)
  16. unreal——UnrealBuildTool : error : Unable to deleteXXXX
  17. 幼儿园案例经验迁移_2020年幼儿园中班教育笔记 生活经验的迁移
  18. 使用PL/Scope分析PL/SQL代码
  19. linux与 win上装pyhive
  20. 梭哈游戏的发牌5-4

热门文章

  1. 一个Web开发的客户端基础技术测试Demo
  2. 容器编排技术 -- Kubernetes kubectl 命令表
  3. CentOS 7安装TigerVNC Server
  4. VS Code常用快捷键汇总
  5. ehcache 加载自定义配置文件ehcache.xml路径
  6. 【记录】Docker安装后出现 Cannot connect to the Docker daemon
  7. 【树莓派】树莓派(Debian)- root用户无法使用SSH登录
  8. golang type 说明和使用
  9. node.js api接口_如何在Node.js API客户端中正常处理故障
  10. rx580网络适配器下载_通过Rx和数据绑定简化RecyclerView适配器