225. 用队列实现栈

Ideas

队列和栈的相互操作,需要特别理解栈和队列这两种数据结构的相同点和不同点。

栈:先进后出,队列:先进先出。

既然数据结构已经限定元素进出的顺序,那么单纯的用一个队列肯定是没办法实现栈的操作的,所以我们想能不能用两个队列实现栈的操作。

首先考虑pop()操作,要移除并返回栈顶元素,假设我们有一个正常入队的队列q1,因为栈是先进后出的操作,所以我们要移除并返回的是q1的最后一个元素。

所以我们可以先把q1中的元素都出队,然后到q2入队,直到q1只剩下1个元素为止,把这个元素弹出并返回。

然后再把q2中的元素出队,入到q1中,这个操作就完成了,保证所有的元素都在q1中,这样好判断empty()和top(),

分析完了之后,我们发现push()操作只需要把元素正常入队q1就欧克了。

Code

Python

然后,我就发现Python的deque不仅支持append()还支持appendleft(),不仅支持pop()还支持popleft(),我擦,你这么全能干嘛,瞬间不想写了。

from collections import dequeclass MyStack:def __init__(self):self.q1, self.q2 = deque(), deque()def push(self, x: int) -> None:self.q1.append(x)def pop(self) -> int:return self.q1.pop()def top(self) -> int:return self.q1[-1]def empty(self) -> bool:return len(self.q1) == 0

LeetCode Algorithm 225. 用队列实现栈相关推荐

  1. LeetCode:225. 用队列实现栈

    1.题目描述 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用 ...

  2. 算法训练Day11 | LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)

    目录 LeetCode232.用栈实现队列 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode225. 用队列实现栈 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 ...

  3. 代码随想录算法训练Day11 LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)

    代码随想录算法训练Day11 | LeetCode232. 用栈实现队列(模拟):225.用队列实现栈(模拟):20. 有效的括号(栈应用):1047. 删除字符串中的所有相邻重复项(栈应用) 关于栈 ...

  4. 【代码随想录刷题记录】 232.用栈实现队列 、225. 用队列实现栈

    232.用栈实现队列 题目 请你仅使用两个栈实现先入先出队列.队列应当支持一般队列支持的所有操作(push.pop.peek.empty): 实现 MyQueue 类: void push(int x ...

  5. 代码随想录【day 10 栈与队列】| 232.用栈实现队列、 225. 用队列实现栈

    代码随想录[day 10 栈与队列]| 232.用栈实现队列. 225. 用队列实现栈 理论基础 LeetCode 232.用栈实现队列 题目链接:232.用栈实现队列 卡哥文解 视频讲解 解题思路( ...

  6. LeetCode(集合)队列和栈的相互实现 golang

    手写!!! 225. 用队列实现栈 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意 ...

  7. Suzy找到实习了吗Day 10 | 栈和队列开始啦:232. 用栈实现队列,225. 用队列实现栈

    day10 python栈的实现 Python栈所需要的包 232. 用栈实现队列 思路 solution ?? 225. 用队列实现栈 思路 solution python栈的实现 Python中现 ...

  8. LeetCode刷题记录——队列、栈

    20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...

  9. 代码随想录第十天 | 225. 用队列实现栈 232.用栈实现队列(Java))

    232.用栈实现队列 class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;public MyQueue( ...

最新文章

  1. 【POCO】POCO学习总结(三)——交叉编译
  2. 干货 | 清华大学刘知远 CCL 2018学生研讨会报告(附完整PPT下载)
  3. python数据结构推荐书-自己想学数据结构,有大佬能推荐一下看什么书吗?
  4. 【Flask项目2】创建模型类映射到数据库,密码加密实现(3)
  5. 总谐波失真80_谐波平衡法仿真(ADS)
  6. Boost:bzip2解压缩器
  7. iOS之深入解析预乘透明度Premultiplied Alpha
  8. linux编译c gedit,[2018年最新整理]LINUX-Gedit文本编辑器.ppt
  9. ubuntu下使用python将ppt转成图片_Ubuntu下使用Python实现游戏制作中的切分图片功能...
  10. jQuery 图片裁剪插件 Jcrop
  11. div+css 布局下兼容IE6 IE7 FF常见问题
  12. html5/haXe开发偶感
  13. 磁盘阵列 RAID 技术原理详解
  14. VMware ESXi客户端连接控制台时提示VMRC控制台连接已断开...正在尝试重新连接的解决方法...
  15. Latex安装教程(附美赛论文latex模板)
  16. 计算机图形学裁剪算法应用,计算机图形学裁剪:关于梁友栋-Barsky算法(Liang-Barsky算法)...
  17. 大数据与云计算之间的联系,一篇文章搞明白!
  18. flutter仿微信
  19. python网课教学_如何上好网课 — 老师录课和在线上课教学经验谈
  20. 微信扫码背后的图像超分辨率技术

热门文章

  1. 综述论文要写英文摘要吗_英文论文的写作讲解 写好英文论文要注意这三点
  2. 爱情 不是一个人的事
  3. Hadoop分布式集群环境准备--无线网下VMware虚拟机设置
  4. vue项目首屏加载慢解决方案
  5. Hot Water Pipe
  6. LeetCode-买卖股票的最佳时机 II
  7. 四季靓汤—土茯苓乌龟汤
  8. 开发物联网,ThingsPanel和ThingsBoard哪个更快更好
  9. 负数在java_在负数中使用Java纪元秒
  10. 设计复数类Complex,实现运算符重载。