用俩个栈模拟实现一个队列,如果栈的容量分别是O和P(OP),那么模拟实现的队列最大容量是多少?
刚才做题碰到了这个有意思的题。
两个栈实现队列是《剑指offer》上的题,大家之前或许都有做过。
但这道题有意思在栈的容量是受限的,求的是容量。
这道题应该再深入的思考下,
首先,到底如何用两个栈实现队列。
大家都知道栈是FILO,队列是FIFO。可真正该实现的是时候就不是简简单单的想 着把一个栈里的数据,存入另一个栈中,这样再取出来就是先进的先出了。
关键问题是何时将一个栈中的数据存入另一个栈。
栈和队列的关键操作是push()
和pop()
,前者负责压入一个数据,后者负责弹出。还有个top()
/front()
分别取栈顶/队首元素。那应该如何用俩栈实现队列的push()
呢?
class DemoQueue
{stack<int> s1, s2;
public:void push(int val){// s2.push(val); 直接存入第二个栈等着pop()? 连着存多个push()不就跟stack一样了么,显然不行。s1.push(val); // s2.push(val) 每push一次都要更新s2以使pop()能正常pop()? 显然也不行,要知道pop()的关键是要保证s2的top()时刻都是队列的队首 }//所以其实push只需压入数据给第一个栈就好了。void pop(){//那pop()就需要下功夫,要知道客户有可能在任何时候调用pop()if (s1.empty() && s2.empty())throw "Wtf";//首先,如果s2没有任何数据,那就
用俩个栈模拟实现一个队列,如果栈的容量分别是O和P(OP),那么模拟实现的队列最大容量是多少?相关推荐
- 用两个队列模拟实现一个栈的过程
栈具有"后进先出"的特点,即某个元素最后进入栈,却最先出栈:队列具有"先进先出"的特点,即元素从队尾依次进队列,依次从队头出队列:现在用两个队列模拟实现一个栈的 ...
- 《剑指offer》c++版本 9. 用两个栈来实现一个队列
如题: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 本题考察对数据结构队列,栈的理解.队列的特点是FIFO,先进先出.栈的特点是FILO,先进后出.题目要求我 ...
- 牛客网(剑指offer) 第五题 用两个栈来实现一个队列
//用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. //方法一:没有用到栈 $queue=array(); function mypush($node) {glo ...
- 算法训练Day11 | LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)
目录 LeetCode232.用栈实现队列 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode225. 用队列实现栈 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 ...
- 代码随想录算法训练Day11 LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)
代码随想录算法训练Day11 | LeetCode232. 用栈实现队列(模拟):225.用队列实现栈(模拟):20. 有效的括号(栈应用):1047. 删除字符串中的所有相邻重复项(栈应用) 关于栈 ...
- 化栈为队(两个栈来实现一个队列)
实现一个MyQueue类,该类用两个栈来实现一个队列. 示例: MyQueue queue = new MyQueue();queue.push(1); queue.push(2); queue.pe ...
- LeetCode 232. Implement Queue using Stacks--用2个栈来实现一个队列--C++解法
LeetCode 232. Implement Queue using Stacks–C++解法 LeetCode题解专栏:LeetCode题解 我做的所有的LeetCode的题目都放在这个专栏里,大 ...
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...
- N5-用两个栈来实现一个队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; /*** 用两个栈来实现一个队列,完成队列的Push和P ...
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; public class Solution { ...
最新文章
- Java设计模式:抽像工厂模式
- 执行计划--为查询指定查询计划
- mysql 5.7 centos 7_CentOS 7 下 MySQL 5.7 的安装与配置
- 工程搭建:搭建子工程之搭建环境构造返回实体类
- 【AI视野·今日NLP 自然语言处理论文速览 第十八期】Fri, 2 Jul 2021
- 10行Python代码搞定目标检测
- 腾讯 2016 春季实习校招二面回忆(C++后台)
- fps up up!!!
- 大数据分析常用的方法有哪些
- 编程一年来的疑惑和思考
- Code a simple telnet client using sockets in python
- python实现决策树ID3算法
- win10 搭建php服务器搭建,Win10平台下安装并配置php
- 远程管理(html),远程管理HTML
- 我的电子产品开发资料学习资料免费下载地址(超值超值。。。)
- Labview调用python
- 使用Bitvise SSH代理访问
- JS 数据容量转换/换算
- 浅谈什么是 云原生
- 用C语言来实现扫雷小游戏
热门文章
- 图像处理工具包ImagXpress的清理图像功能简介
- 如何将敏捷开发与V模型深度融合?这家企业给出答案
- OTC承兑平台系统源码 otc承兑商支付系统 区块链支付系统源码
- 【2022-04-22】通用新闻抽取器GNE-自动化爬虫通用解析器
- 9月CPI同比上涨1.6% 房租连涨57个月
- 02ServletHTTPRequestResponse
- 神经网络实用工具(整活)系列---使用OpenAI的翻译模型whisper实现语音(中、日、英等等)转中字,从此生肉变熟肉---基础篇
- 工业级环网交换机的优点
- 08_ue4进阶末日生存游戏开发[导入动画和骨骼]
- 2110-课前资料及授课说明