【Java面试题】用两个栈来实现队列
2020-02-16 18:10
302 查看
【题目】:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
【示例】: 队列:输入1234,输出1234
【关键点】:
利用栈(先进后出)原理、 2个栈组成队列(先进先出);
- 栈1:入栈顺序abcd、出栈顺序dcba;
- 栈2:入栈顺序 为栈1的出栈顺序dcba、 出栈顺序为abcd。
队列:先进先出(输入abcd,出来顺序依旧是abcd)
【Java】:
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);//存入栈1 } public int pop() {//取出 if(stack2.empty()){//必须判断栈2全为空时,再循环存入栈2,不然队列流水线走可能会错位; while(!stack1.isEmpty()) { stack2.push(stack1.pop());//取出栈1全部节点存入栈2 } } return stack2.pop();//栈2弹出 } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 【Java面试题】旋转数组的最小数
- 【Java面试题】斐波那契数列
- 4000 【Java面试题】矩形覆盖
- 【Java面试题】调整数组中数字顺序
- 【Java面试题】链表中倒数第k个结点
- 【Java面试题】合并链表
- 【Java面试题】try-catch-finally结合return执行顺序
- 【Java面试题】Java程序初始化顺序
- 【Java面试题】判断B是不是A(二叉树)的子结构
- 【Java面试题】二叉树的镜像
- 【Java面试题】左旋转字符串
- 【Java面试题】求1+2+3+...+n
- 【Java面试题】栈的压入弹出序列
- 【Java面试题】从上往下打印二叉树
- 【Java面试题】二叉搜索树后序遍历
- 【Java面试题】最小的K个数
- 代码审计--22--新篇章之Java代码审计(一)
- 代码审计--23--新篇章之Java代码审计(二)
- 代码审计- 4000 -24--新篇章之Java代码审计(三)
- 代码审计--25--新篇章之Java代码审计(四)