1. 题目

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTaildeleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,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. 用两个栈实现队列相关推荐

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

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题思路: 一个队列包含两个栈,这道题目的意图是要求我们操作两个"先进后出"的栈实现 ...

  2. 剑指offer面试题09. 用两个栈实现队列(队列、栈)

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

  3. 剑指offer第二版-9.用两个栈实现队列

    描述:使用两个栈实现一个队列.队列中实现尾部插入和头部删除函数. 思路:stack1负责插入,stack2负责弹出,如果stack2为空了,将stack1的元素依次弹出并存放到stack2中,之后对s ...

  4. 剑指Offe面试题:用两个栈实现队列

    用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 分析 首先可以自己尝试使用1 2 3少量元素的入栈出栈摸索两个栈的使用,从特殊到一般 ...

  5. 剑指offer(05)用两个栈实现队列

    参考:https://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html 思路1:始终维护s1作为存储空间,以s2作为临时缓冲 ...

  6. 剑指offer——面试题37:两个链表的第一个公共结点

    剑指offer--面试题37:两个链表的第一个公共结点 20180906整理 Solution1: 时间复杂度为O(n2)O(n2)O(n^2)的垃圾算法 /* struct ListNode {in ...

  7. [剑指offer]面试题37:两个链表的第一个公共结点

    面试题37:两个链表的第一个公共结点 题目:输入两个链表,找出它们的第一个公共结点.链表结点定义如下: struct ListNode {int val;ListNode *next;ListNode ...

  8. 剑指Offer面试题:31.两个链表的第一个公共节点

    一.题目:两个链表的第一个公共节点 题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义如下,这里使用C#语言描述: public class Node{public int key;publ ...

  9. 【剑指offer-Java版】07用两个栈实现队列

    两个栈实现一个队列:stack_1 stack_2 入队操作:直接入stack_1 出队操作:如果stack_2不为空,那么从其中弹出一个作为出队元素,否则将stack_1元素全部依次压入stack_ ...

最新文章

  1. 牛逼哄哄的 Lambda 表达式,简洁优雅就是生产力!
  2. 微型计算机系统结构的五大基本组成部件,连接计算机系统结构的五大基本组成部件...
  3. 利用ESP8266测量模块来设计远距离反射式光电检测 : ITR8307
  4. Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局
  5. MySQL server has gone away报错原因分析及解决办法
  6. 软件项目技术点(21)——自动保存和恢复
  7. python获取excel某一列-Python从Excel中读取日期一列的方法
  8. webpack环境搭建使用
  9. c++禁止进程被结束_多进程任务实现
  10. Swift - 自定义单元格实现微信聊天界面
  11. STL源码剖析 数值算法 accumulate | adjacent_difference | inner_product | partial_sum | power | itoa
  12. php mysqli 字段缺失,mysqli 为什么不提示字段异常
  13. Linux系统安装sudo
  14. python selenium清除缓存_SeleniumPython:无法清除chrome浏览器缓存
  15. RabbitMQ教程(安装与使用详解,Spring集成)
  16. alphazero 五子棋开源代码分析
  17. 最新版HBuilderx + 夜神模拟器 模拟器调试设置
  18. 自然语言期末复习笔记—Morphological Analysis
  19. 阿里研究院杨健:数据将成为未来经济的生产要素
  20. php 商品图片分享,PHP合成活动商品图片分享海报

热门文章

  1. springmvc视图解析器_SpringMVC视图及REST风格
  2. 特别慢_背什么都特别慢,该怎么提高记忆力?
  3. class_create()函数
  4. 深入理解ES6之迭代器与生成器
  5. python-类的定制
  6. 程序员经常说的「设计模式」到底是什么?
  7. nodejs在cmd提示不是内部或外部命令解决方法
  8. ApiController得到服务器端绝对路径
  9. asp.net基础知识
  10. T4生成实体和简单的CRUD操作