LeetCode Algorithm 225. 用队列实现栈
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. 用队列实现栈相关推荐
- LeetCode:225. 用队列实现栈
1.题目描述 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用 ...
- 算法训练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. 删除字符串中的所有相邻重复项(栈应用) 关于栈 ...
- 【代码随想录刷题记录】 232.用栈实现队列 、225. 用队列实现栈
232.用栈实现队列 题目 请你仅使用两个栈实现先入先出队列.队列应当支持一般队列支持的所有操作(push.pop.peek.empty): 实现 MyQueue 类: void push(int x ...
- 代码随想录【day 10 栈与队列】| 232.用栈实现队列、 225. 用队列实现栈
代码随想录[day 10 栈与队列]| 232.用栈实现队列. 225. 用队列实现栈 理论基础 LeetCode 232.用栈实现队列 题目链接:232.用栈实现队列 卡哥文解 视频讲解 解题思路( ...
- LeetCode(集合)队列和栈的相互实现 golang
手写!!! 225. 用队列实现栈 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意 ...
- Suzy找到实习了吗Day 10 | 栈和队列开始啦:232. 用栈实现队列,225. 用队列实现栈
day10 python栈的实现 Python栈所需要的包 232. 用栈实现队列 思路 solution ?? 225. 用队列实现栈 思路 solution python栈的实现 Python中现 ...
- LeetCode刷题记录——队列、栈
20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...
- 代码随想录第十天 | 225. 用队列实现栈 232.用栈实现队列(Java))
232.用栈实现队列 class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;public MyQueue( ...
最新文章
- 【POCO】POCO学习总结(三)——交叉编译
- 干货 | 清华大学刘知远 CCL 2018学生研讨会报告(附完整PPT下载)
- python数据结构推荐书-自己想学数据结构,有大佬能推荐一下看什么书吗?
- 【Flask项目2】创建模型类映射到数据库,密码加密实现(3)
- 总谐波失真80_谐波平衡法仿真(ADS)
- Boost:bzip2解压缩器
- iOS之深入解析预乘透明度Premultiplied Alpha
- linux编译c gedit,[2018年最新整理]LINUX-Gedit文本编辑器.ppt
- ubuntu下使用python将ppt转成图片_Ubuntu下使用Python实现游戏制作中的切分图片功能...
- jQuery 图片裁剪插件 Jcrop
- div+css 布局下兼容IE6 IE7 FF常见问题
- html5/haXe开发偶感
- 磁盘阵列 RAID 技术原理详解
- VMware ESXi客户端连接控制台时提示VMRC控制台连接已断开...正在尝试重新连接的解决方法...
- Latex安装教程(附美赛论文latex模板)
- 计算机图形学裁剪算法应用,计算机图形学裁剪:关于梁友栋-Barsky算法(Liang-Barsky算法)...
- 大数据与云计算之间的联系,一篇文章搞明白!
- flutter仿微信
- python网课教学_如何上好网课 — 老师录课和在线上课教学经验谈
- 微信扫码背后的图像超分辨率技术