【Java】LeetCode 225. 用队列实现栈
题目:
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。
实现 MyStack 类:
void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
注意:
你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。
你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。
解题思路:
- 入栈的时候,入到不为空的队列,刚开始两个队列都为空的话,指定入到一个队列;
- 出栈的时候,找到不为空的队列,出size-1个元素到另一个队列中去,剩下的这个元素就是出栈的元素;
关键是画图分析:
具体代码实现如下 :
class MyStack {public Queue<Integer> qu1;public Queue<Integer> qu2;public MyStack() {qu1=new LinkedList<>();qu2=new LinkedList<>();}public void push(int x) { //入栈模拟实现(qu1+qu2)if (!qu1.isEmpty()){qu1.offer(x);}else if (!qu2.isEmpty()){qu2.offer(x);}else{qu1.offer(x);}}public int pop() { //出栈模拟实现(qu1+qu2)if (empty()) return -1;if (!qu1.isEmpty()){int size=qu1.size();for (int i = 0; i < size-1; i++) {int val=qu1.poll();qu2.offer(val);}return qu1.poll();}if (!qu2.isEmpty()){int size=qu2.size();for (int i = 0; i < size-1; i++) {int val=qu2.poll();qu1.offer(val);}return qu2.poll();}return -1;}public int top() { //返回栈顶元素:与上面出栈类似,只不过遍历时候size为全部遍历,最后存到val里面的元素就是栈顶元素!if (empty()) return -1;if (!qu1.isEmpty()){int size=qu1.size();int val=-1;for (int i = 0; i < size; i++) {val=qu1.poll();qu2.offer(val);}return val;}if (!qu2.isEmpty()){int size=qu2.size();int val=-1;for (int i = 0; i < size; i++) {val=qu2.poll();qu1.offer(val);}return val;}return -1;}public boolean empty() { //两个队列都为空的时刻Mystack 为空return qu1.isEmpty() && qu2.isEmpty();}
}
【Java】LeetCode 225. 用队列实现栈相关推荐
- leetcode 225 用队列实现栈(JS)
使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作 ...
- leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)
题目 思路 维护两个队列,每一次 pop 或者 top 操作,都把当前队列的所有元素放进另外一个队列中(保留或查看最后一个元素,用于返回) 题解 class MyStack {ArrayList< ...
- 代码随想录【day 10 栈与队列】| 232.用栈实现队列、 225. 用队列实现栈
代码随想录[day 10 栈与队列]| 232.用栈实现队列. 225. 用队列实现栈 理论基础 LeetCode 232.用栈实现队列 题目链接:232.用栈实现队列 卡哥文解 视频讲解 解题思路( ...
- LeetCode Algorithm 225. 用队列实现栈
225. 用队列实现栈 Ideas 队列和栈的相互操作,需要特别理解栈和队列这两种数据结构的相同点和不同点. 栈:先进后出,队列:先进先出. 既然数据结构已经限定元素进出的顺序,那么单纯的用一个队列肯 ...
- 代码随想录第十天 | 225. 用队列实现栈 232.用栈实现队列(Java))
232.用栈实现队列 class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;public MyQueue( ...
- 算法训练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 ...
- Suzy找到实习了吗Day 10 | 栈和队列开始啦:232. 用栈实现队列,225. 用队列实现栈
day10 python栈的实现 Python栈所需要的包 232. 用栈实现队列 思路 solution ?? 225. 用队列实现栈 思路 solution python栈的实现 Python中现 ...
最新文章
- 快速生成apk 自动发布到网站 便于测试
- 32.C#--方法中使用out参数做登录判断
- 关于工具类应用产品界面设计的一点思考
- 机器人网首页应用实例工业自动化 EtherCAT 技术在库卡机器人控制系统上的应用
- 【代码笔记】iOS-下拉选项cell
- SACC2019架构师大会PPT合集
- 深度学习的半精度浮点数的运用
- POJ2456-Aggressive cows
- 使用promise封装ajax请求
- IE插件在注册表中的相关位置
- 魏尔斯特拉斯---严谨的典范
- Flink SQL Client的使用
- Python实现图像的全景拼接,这不比ps牛逼
- Web3能否撕裂国内 VC 的共识?
- 手工注入完成SQL注入漏洞
- 人因工程典型应用-隧道灯光循序渐近
- mac m1关闭sip系统完整性保护csrutil disable,如何禁用mac m1的系统完整性保护
- 网络与信息安全领域泰斗
- Technology Daily - 2019/02/27
- android 人脸识别换发型,换发型测脸型