剑指offer 5.栈和队列 用两个栈实现队列
2024-09-03 05:34:33
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路:
1,整体思路是元素先依次进入栈1,再从栈1依次弹出到栈2,然后弹出栈2顶部的元素,整个过程就是一个队列的先进先出
2,但是在交换元素的时候需要判断两个栈的元素情况:
“进队列时”,队列中是还还有元素,若有,说明栈2中的元素不为空,此时就先将栈2的元素倒回到栈1 中,保持在“进队列状态”。
“出队列时”,将栈1的元素全部弹到栈2中,保持在“出队列状态”。
所以要做的判断是,进时,栈2是否为空,不为空,则栈2元素倒回到栈1,出时,将栈1元素全部弹到栈2中,直到栈1为空。
1,整体思路是元素先依次进入栈1,再从栈1依次弹出到栈2,然后弹出栈2顶部的元素,整个过程就是一个队列的先进先出
2,但是在交换元素的时候需要判断两个栈的元素情况:
“进队列时”,队列中是还还有元素,若有,说明栈2中的元素不为空,此时就先将栈2的元素倒回到栈1 中,保持在“进队列状态”。
“出队列时”,将栈1的元素全部弹到栈2中,保持在“出队列状态”。
所以要做的判断是,进时,栈2是否为空,不为空,则栈2元素倒回到栈1,出时,将栈1元素全部弹到栈2中,直到栈1为空。
代码实现:
import java.util.Stack; public class StackToQueue { Stack<Integer> stack1 = new Stack<Integer>(); public void push(int node) { public int pop() { return stack2.pop(); } |
最新文章
- 关于<;textArea>;控件下显示不出其它控件
- jquery 中一些 特殊方法 的特殊使用 一览表
- Apache+tomcat+mod_jk+centos6.2负载均衡集群配置--转载
- C# 引用SHDocVw 实现模拟网页操作
- 什麼是 N-key 與按鍵衝突?原理說明、改善技術、選購注意完全解析
- AC日记——【模板】字符串哈希 洛谷 3370
- Spring学习一
- linux下的Shell编程(5)循环
- Day71Django基础
- spring-boot(七) 随机端口
- Docker Swarm 服务版本更新与回滚
- JDBC操作数据库步骤
- 不同CSS技术及其CSS性能
- bzoj1215
- poj3349(hash table)
- Web前端性能优化的三个偏方
- Spark 源码解析 : DAGScheduler中的DAG划分与提交
- hihocoder1479 三等分
- 【剑指offer】输入一颗二叉树的根节点,判断是不是平衡二叉树,C++实现
- django1.11+xadmin的搭建