剑指offer-----用两个栈实现队列(java版)
来源:互联网 发布:潍坊淘宝托管 编辑:程序博客网 时间:2024/05/22 15:39
一 题目
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
二 例子
测试操作:["PUSH1","PUSH2","PUSH3","POP","POP","PUSH4","POP","PUSH5","POP","POP"]
对应输出:1 2 3 4 5
三 思路
一开始push的时候只对 栈1 push,在pop操作时,遍历栈1,将栈1元素逐个弹出然后push到栈2,这时将栈2执行pop操作,就可以变成是队列的FIFO的形式,但是要注意一点是,我们在执行pop操作时,是把栈1元素全部pop,然后再push到栈2的(这时栈1是空的),所以在进行一次pop操作后,需要将栈2剩余的元素push回栈1中,这样下次pop操作才可以得到正确的结果。
四 程序源码
import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.push(node); } public int pop() { while(!stack1.empty()){ stack2.push(stack1.pop()); } int first = stack2.pop(); while(!stack2.empty()){ //将栈2剩余元素push回栈1,同时栈2弹出,否则下次结果会不一致 stack1.push(stack2.pop()); } return first; }}
0 0
- 《剑指offer》用两个队列实现栈 Java版实现
- 【剑指offer-Java版】07用两个栈实现队列
- 剑指offer-----用两个栈实现队列(java版)
- 剑指offer-Java-用两个栈实现队列
- 【剑指offer】 用两个栈实现队列 -Java
- 《剑指offer》牛客网java题解-用两个栈实现队列
- 剑指offer:用两个栈实现队列、用两个队列实现一个栈(java)
- 剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈
- 剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈
- [剑指offer]用两个栈实现队列
- 【剑指offer】用两个栈实现队列
- 剑指offer--用两个栈实现队列
- 剑指Offer-用两个栈实现队列
- 剑指offer:用两个栈实现队列
- 《剑指offer》用两个栈实现队列
- 用两个栈实现队列(剑指offer)
- 剑指 offer:用两个栈实现队列
- 【剑指Offer】用两个栈实现队列
- JAVA面向对象--继承--易遗忘知识点
- Shader案例篇—《镜子1》
- JS:input上传如何获取文件名并显示在另一个文本框中
- jQuery学习笔记(三) 元素处理
- bzoj 1078: [SCOI2008]斜堆 (可并堆)
- 剑指offer-----用两个栈实现队列(java版)
- JAVA学习之路---ThreadLocal
- 计算机网络——概述
- python学习(一)
- 【Java每日一题】20170110
- android_54_电话录音机
- Node核心模块之QueryString
- File Watch resourece
- Shader案例篇二《镜子2》