剑指Offer - 面试题9. 用两个栈实现队列
1. 题目
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail
和 deleteHead
,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead
操作返回 -1 )
- 类似题目:
- LeetCode 232. 用栈实现队列(双栈法->队列)
- LeetCode 225. 用队列实现栈
示例 1:
输入:
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
输出:[null,null,3,-1]示例 2:
输入:
["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
[[],[],[5],[2],[],[]]
输出:[null,-1,null,null,5,2]提示:
1 <= values <= 10000
最多会对 appendTail、deleteHead 进行 10000 次调用
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 建立两个栈,
in,out
in
负责进入队列out
负责出队- 出队时,
out
不为空直接弹栈,为空,先将所有的in
,弹出,并压入out
,最后弹出out
的栈顶
class CQueue {int v;stack<int> in;stack<int> out;
public:CQueue() {}void appendTail(int value) {in.push(value);}int deleteHead() {if(in.empty() && out.empty())return -1;if(out.empty() && !in.empty()){while(!in.empty()){out.push(in.top());in.pop();}}v = out.top();out.pop();return v;}
};
剑指Offer - 面试题9. 用两个栈实现队列相关推荐
- 剑指offer面试题[7]-用两个栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题思路: 一个队列包含两个栈,这道题目的意图是要求我们操作两个"先进后出"的栈实现 ...
- 剑指offer面试题09. 用两个栈实现队列(队列、栈)
题目描述 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,dele ...
- 剑指offer第二版-9.用两个栈实现队列
描述:使用两个栈实现一个队列.队列中实现尾部插入和头部删除函数. 思路:stack1负责插入,stack2负责弹出,如果stack2为空了,将stack1的元素依次弹出并存放到stack2中,之后对s ...
- 剑指Offe面试题:用两个栈实现队列
用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 分析 首先可以自己尝试使用1 2 3少量元素的入栈出栈摸索两个栈的使用,从特殊到一般 ...
- 剑指offer(05)用两个栈实现队列
参考:https://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html 思路1:始终维护s1作为存储空间,以s2作为临时缓冲 ...
- 剑指offer——面试题37:两个链表的第一个公共结点
剑指offer--面试题37:两个链表的第一个公共结点 20180906整理 Solution1: 时间复杂度为O(n2)O(n2)O(n^2)的垃圾算法 /* struct ListNode {in ...
- [剑指offer]面试题37:两个链表的第一个公共结点
面试题37:两个链表的第一个公共结点 题目:输入两个链表,找出它们的第一个公共结点.链表结点定义如下: struct ListNode {int val;ListNode *next;ListNode ...
- 剑指Offer面试题:31.两个链表的第一个公共节点
一.题目:两个链表的第一个公共节点 题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义如下,这里使用C#语言描述: public class Node{public int key;publ ...
- 【剑指offer-Java版】07用两个栈实现队列
两个栈实现一个队列:stack_1 stack_2 入队操作:直接入stack_1 出队操作:如果stack_2不为空,那么从其中弹出一个作为出队元素,否则将stack_1元素全部依次压入stack_ ...
最新文章
- 牛逼哄哄的 Lambda 表达式,简洁优雅就是生产力!
- 微型计算机系统结构的五大基本组成部件,连接计算机系统结构的五大基本组成部件...
- 利用ESP8266测量模块来设计远距离反射式光电检测 : ITR8307
- Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局
- MySQL server has gone away报错原因分析及解决办法
- 软件项目技术点(21)——自动保存和恢复
- python获取excel某一列-Python从Excel中读取日期一列的方法
- webpack环境搭建使用
- c++禁止进程被结束_多进程任务实现
- Swift - 自定义单元格实现微信聊天界面
- STL源码剖析 数值算法 accumulate | adjacent_difference | inner_product | partial_sum | power | itoa
- php mysqli 字段缺失,mysqli 为什么不提示字段异常
- Linux系统安装sudo
- python selenium清除缓存_SeleniumPython:无法清除chrome浏览器缓存
- RabbitMQ教程(安装与使用详解,Spring集成)
- alphazero 五子棋开源代码分析
- 最新版HBuilderx + 夜神模拟器 模拟器调试设置
- 自然语言期末复习笔记—Morphological Analysis
- 阿里研究院杨健:数据将成为未来经济的生产要素
- php 商品图片分享,PHP合成活动商品图片分享海报