参考:https://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html

思路1:始终维护s1作为存储空间,以s2作为临时缓冲区。

入队时,将元素压入s1。

出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。

思路2如:

入队时,先判断s1是否为空,如不为空,说明所有元素都在s1,此时将入队元素直接压入s1;如为空,要将s2的元素逐个“倒回”s1,再压入入队元素。

出队时,先判断s2是否为空,如不为空,直接弹出s2的顶元素并出队;如为空,将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队。

见下面示意图:

import java.util.Stack;public class Solution {Stack<Integer> stack1 = new Stack<Integer>();Stack<Integer> stack2 = new Stack<Integer>();//进栈public void push(int node) {//如果栈1为空,将栈2中的数据倒入到栈1if(stack1.isEmpty()){while(!stack1.isEmpty())stack1.push(stack2.pop());//然后将node压入栈}stack1.push(node);}//出队public int pop() {if(stack1.isEmpty()&&stack2.isEmpty())throw new RuntimeException("queue is empty");//如果栈1为空,直接输出栈2if(stack2.isEmpty()){//否则将栈1的值输入到栈2,再输出while(!stack1.isEmpty())stack2.push(stack1.pop());}return stack2.pop();}
}

剑指offer(05)用两个栈实现队列相关推荐

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

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

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

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

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

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

  4. 【LeetCode】剑指 Offer 09. 用两个栈实现队列

    [LeetCode]剑指 Offer 09. 用两个栈实现队列 文章目录 [LeetCode]剑指 Offer 09. 用两个栈实现队列 一.双栈 总结 一.双栈 维护两个栈,第一个栈支持插入操作,第 ...

  5. 【剑指offer】 用两个栈实现队列 java实现

    [剑指offer] 用两个栈实现队列 题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 分析: 栈和队列的性质,栈是先进后出的,而队列是先进先出的.对于栈我 ...

  6. [剑指Offer]9.用两个栈实现队列

    题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路 用栈来模拟队列.我们首先插入一个元素a到stack1中,再压入两个元素bc,此时栈中有元素abc,其中 ...

  7. 剑指OFFER之用两个栈实现队列(九度OJ1512)

    题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例. 对于每个测试样例,第一行输入一个n(1<=n<=1 ...

  8. Leetcode 剑指 Offer 09. 用两个栈实现队列 (每日一题 20210915)

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

  9. 【双100%提交】剑指 Offer 09. 用两个栈实现队列

    立志用最少的代码做最高效的表达 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队 ...

  10. 剑指 Offer 09. 用两个栈实现队列(相邻相同操作只需要移动一次)

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

最新文章

  1. 9.DRN: A Deep Reinforcement Learning Framework for News Recommendation论文详解
  2. illegalargumentexception是什么异常_线程出现异常!应该如何处理?
  3. 离线轻量级大数据平台Spark之中文字符显示问题的解决
  4. 求一个字符串的前缀与另一个字符串的后缀的最大相同子串
  5. malloc 和new 区别
  6. SQL 查询总是先执行SELECT语句吗?
  7. 未来流媒体工作流的核心技术
  8. 列表是不是python数据类型的是_在Python中,一个列表中的数据类型是否可以不相同?(回答可以or不可以)...
  9. 商业大亨微信草花服务器,商业大亨2每日答题和服务器进度奖励
  10. pl/sql developer安装与配置
  11. imx6 android8流畅,NXP iMX8和iMX6 ARM处理器网络性能对比
  12. 按键精灵通过句柄获取窗口坐标_学会用按键精灵获取子窗口句柄
  13. 应用程序现代化权威指南
  14. java isbn_java – 将ISBN10转换为ISBN13
  15. 如何快速爬取网页数据(干货)
  16. Vue播放m3u8视频格式的视频监控(适合移动端和pc端),用了Video.js,以及多视频列表循环播放代码,已测试,可播放
  17. 容器亲和、反亲和、污点、容忍以及驱逐的介绍
  18. python爬虫实验总结_python3爬虫总结(共4篇).docx
  19. 智慧景区“数字孪生“三维可视化运营管理平台-景区“元宇宙”的数字
  20. 字体与版式设计 字体设计让你的信息变独特

热门文章

  1. kingcms php 排序 标签,修改PHPCMS V9列表排序,listorder、order排序功能的方法
  2. linux6 epel yum源,CentOS6下yum源与epel源配置
  3. php 蓝奏网盘上传文件,蓝奏云_文件上传_API
  4. python提高运行效率_提高 Python 运行效率的六个窍门
  5. html标题怎么分开,html – 如何使用angularjs将标签标题与其主体分开?
  6. 光纤熔接盒盘线方法_【图文教程】光纤熔接技术的操作与技巧分享!
  7. 知乎热议:嵌入式开发中C++好用吗?
  8. 无穷大功率电源matlab仿真,MATLAB-Simulink系统建模与仿真-实验报告
  9. php如何防sql注入攻击,php防sql注入攻击(含php6)
  10. php对分数排序,php-MySQL @grouping结果按ID并按分数排序”问题