面试题8:用两个栈实现队列

一、题目描述

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。

二、思路

这道题非常简单,我给你说,你就把栈当成一个存放乒乓球(元素)的细瓶子,如果你有两个细瓶子,你就可以倒来倒去操纵乒乓球了


题中说用两个栈,换种角度,我们是拥有了两个存放乒乓球的细瓶子。

在队列尾部插入节点:
我们直接在栈1中插入即可,读取的时候,把栈1的元素移入栈2(细瓶子1的乒乓球倒入细瓶子2),栈2的遍历与队列保持一致即可。

队列头部删除结点的功能:
把栈1的元素移入栈2(细瓶子1的乒乓球倒入细瓶子2),移除栈2最顶端的的元素(拿走细瓶子2最上面的乒乓球)

三、实现

代码解答如下:

 class Queue{Stack<Integer> stack1 = new Stack<Integer>();Stack<Integer> stack2 = new Stack<Integer>();// 插入节点public void push(int node) {stack1.push(node);}// 删除节点public int pop() {if (stack2.empty()) {if (stack1.empty())throw new RuntimeException("队列为空!");else {while (!stack1.empty())stack2.push(stack1.pop());}}return stack2.pop();}}

剑指Offer对答如流系列 - 用两个栈实现队列相关推荐

  1. 剑指offter-面试题7.用两个栈实现队列

    题目.用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead分别完成在对尾插入节点和在队头删除节点. 该队列类模板如下: 1 template <ty ...

  2. 剑指Offer对答如流系列 - 矩阵中的路径

    文章目录 面试题11:矩阵中的路径 一.题目描述 二.问题分析 三.实现 四.探讨 解空间 (1)子集树 (2)排列树 面试题11:矩阵中的路径 一.题目描述 请设计一个函数,用来判断在一个矩阵中是否 ...

  3. 剑指Offer对答如流系列 - 构建乘积数组

    文章目录 面试题66:构建乘积数组 一.题目描述 二.问题分析 三.问题解答 面试题66:构建乘积数组 一.题目描述 给定一个数组A[0, 1, -, n-1],请构建一个数组B[0, 1, -, n ...

  4. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  5. 【LeetCode】剑指 Offer 30. 包含min函数的栈

    [LeetCode]剑指 Offer 30. 包含min函数的栈 文章目录 [LeetCode]剑指 Offer 30. 包含min函数的栈 一.辅助栈 一.辅助栈 解题思路: 普通栈的 push() ...

  6. 剑指 Offer 30. 包含min函数的栈 (python实现)

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

  7. Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈

    Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术 ...

  8. 划水总结剑指offer 链表系列1

    最近在找实习,发现面试题和oj的题差距蛮大的,然后粗略的刷了一遍剑指offer.希望6月中旬前能拿个实习(捂脸哭) 1.首先总结关于链表的题. (1)从尾到头打印一个链表.像我这样的憨憨上来就想 这不 ...

  9. 剑指offer试题系列

    剑指offer之题目5 题目描述: 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%2 ...

最新文章

  1. gvim在windows下中文乱码的终极解决方案
  2. Java中的42行代码中的URL缩短服务— Java(?!)Spring Boot + Redis
  3. 非IE浏览器下让界面变灰色
  4. Adobe Flash地图控件AnyMap
  5. 扩展模块已停止工作怎么解决_菲尼克斯Phoenix控制器电源模块维修检测免费
  6. 关于使用HTML或JS实现页面重定向的方法
  7. 湖南师范大学学科综合评价计算机,师范类高校自主招生/综合评价相关问答,2020届参考...
  8. 计算机卡驱动版本过低,显卡驱动版本过低怎么办?
  9. 数据可视化ECharts:饼形图 1年龄分布模块制作
  10. android传屏器怎么获取热点,手机做热点怎么投屏 为你介绍投屏的方法
  11. CSS样式书写的三种方式
  12. Android Studio 关于TextToSpeech Speak失败
  13. 查看自己的GitHub地址
  14. 大数据挖掘技术在企业创新中的应用
  15. 经典俄罗斯方块游戏使用手册
  16. TOP 命令中wio的正确理解
  17. 盲源分离matlab程序,ica盲源分离matlab程序.docx
  18. 2020年煤矿采煤机(掘进机)操作多少分及格及煤矿采煤机(掘进机)操作新版试题
  19. python操作sqlite3----增删改查
  20. 选择Citrix XenServer的五个理由

热门文章

  1. 娱乐_3D相册(HTML)_七夕
  2. 谷歌浏览器网页表格复制一列_如何冻结或隐藏Google表格中的列和行
  3. 利用临时文件恢复PowerPoint(PPT)文件
  4. Android应用开发实战-保活组件
  5. VideoSolo Blu ray Player for Mac(mac蓝光播放器)
  6. [转]Unity 打包快手
  7. 计算机与控制科学谁好,考研考哪个方向好呢?模式识别 控制理论控制工程 计算机应专业研究生 信号与信息处理的进...
  8. Word控件Spire.Doc 【文本】教程(1) ;C#/VB.NET:从 Word 文档中删除文本或图像水印
  9. 多进程爬取补天的厂商
  10. 【无标题】scp的使用