剑指Offer对答如流系列 - 用两个栈实现队列
面试题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对答如流系列 - 用两个栈实现队列相关推荐
- 剑指offter-面试题7.用两个栈实现队列
题目.用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead分别完成在对尾插入节点和在队头删除节点. 该队列类模板如下: 1 template <ty ...
- 剑指Offer对答如流系列 - 矩阵中的路径
文章目录 面试题11:矩阵中的路径 一.题目描述 二.问题分析 三.实现 四.探讨 解空间 (1)子集树 (2)排列树 面试题11:矩阵中的路径 一.题目描述 请设计一个函数,用来判断在一个矩阵中是否 ...
- 剑指Offer对答如流系列 - 构建乘积数组
文章目录 面试题66:构建乘积数组 一.题目描述 二.问题分析 三.问题解答 面试题66:构建乘积数组 一.题目描述 给定一个数组A[0, 1, -, n-1],请构建一个数组B[0, 1, -, n ...
- 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java
<LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...
- 【LeetCode】剑指 Offer 30. 包含min函数的栈
[LeetCode]剑指 Offer 30. 包含min函数的栈 文章目录 [LeetCode]剑指 Offer 30. 包含min函数的栈 一.辅助栈 一.辅助栈 解题思路: 普通栈的 push() ...
- 剑指 Offer 30. 包含min函数的栈 (python实现)
剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...
- Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈
Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈 大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术 ...
- 划水总结剑指offer 链表系列1
最近在找实习,发现面试题和oj的题差距蛮大的,然后粗略的刷了一遍剑指offer.希望6月中旬前能拿个实习(捂脸哭) 1.首先总结关于链表的题. (1)从尾到头打印一个链表.像我这样的憨憨上来就想 这不 ...
- 剑指offer试题系列
剑指offer之题目5 题目描述: 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%2 ...
最新文章
- gvim在windows下中文乱码的终极解决方案
- Java中的42行代码中的URL缩短服务— Java(?!)Spring Boot + Redis
- 非IE浏览器下让界面变灰色
- Adobe Flash地图控件AnyMap
- 扩展模块已停止工作怎么解决_菲尼克斯Phoenix控制器电源模块维修检测免费
- 关于使用HTML或JS实现页面重定向的方法
- 湖南师范大学学科综合评价计算机,师范类高校自主招生/综合评价相关问答,2020届参考...
- 计算机卡驱动版本过低,显卡驱动版本过低怎么办?
- 数据可视化ECharts:饼形图 1年龄分布模块制作
- android传屏器怎么获取热点,手机做热点怎么投屏 为你介绍投屏的方法
- CSS样式书写的三种方式
- Android Studio 关于TextToSpeech Speak失败
- 查看自己的GitHub地址
- 大数据挖掘技术在企业创新中的应用
- 经典俄罗斯方块游戏使用手册
- TOP 命令中wio的正确理解
- 盲源分离matlab程序,ica盲源分离matlab程序.docx
- 2020年煤矿采煤机(掘进机)操作多少分及格及煤矿采煤机(掘进机)操作新版试题
- python操作sqlite3----增删改查
- 选择Citrix XenServer的五个理由
热门文章
- 娱乐_3D相册(HTML)_七夕
- 谷歌浏览器网页表格复制一列_如何冻结或隐藏Google表格中的列和行
- 利用临时文件恢复PowerPoint(PPT)文件
- Android应用开发实战-保活组件
- VideoSolo Blu ray Player for Mac(mac蓝光播放器)
- [转]Unity 打包快手
- 计算机与控制科学谁好,考研考哪个方向好呢?模式识别 控制理论控制工程 计算机应专业研究生 信号与信息处理的进...
- Word控件Spire.Doc 【文本】教程(1) ;C#/VB.NET:从 Word 文档中删除文本或图像水印
- 多进程爬取补天的厂商
- 【无标题】scp的使用