本文首发于我的个人博客:尾尾部落

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

解题思路

两个栈 stack1 和 stack2:

  • push 动作都在 stack1 中进行,
  • pop 动作在 stack2 中进行。当 stack2 不为空时,直接 pop,当 stack2 为空时,先把 stack1 中的元素 pop 出来,push 到 stack2 中,再从 stack2 中 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() {if(stack1.isEmpty() && stack2.isEmpty())throw new RuntimeException("Queue is empty!");int node;if(stack2.isEmpty()){while(!stack1.isEmpty()){node = stack1.pop();stack2.push(node);}}return stack2.pop();}
}

[剑指offer] 用两个栈实现队列相关推荐

  1. 剑指offer——用两个栈实现队列

    题目:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题思路: 当stack2不为空时,在stack2中的栈顶元素是最先进入队列的元素,可以弹出.当stack2 ...

  2. 【栈与队列】剑指offer:两个栈模拟队列

    栈:先进后出 队列:先进先出 所以,只要分3种情况写即可 class Solution { public:void push(int node) {stack1.push(node);}int pop ...

  3. 剑指offer五:两个栈实现一个队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. package com.jianzhioffer;import java.util.Stack;publ ...

  4. 剑指offer 用2个栈实现队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解决方案: import java.util.Stack;public class Solution { ...

  5. 剑指offer-JZ9 用两个栈实现队列(C++,附思路)

    描述 用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能. 队列中的元素为int类型.保证操作合法,即保证pop操作时队列内已有元 ...

  6. 剑指Offer09. 用两个栈实现队列

    class CQueue {public:stack<int> stack1,stack2;CQueue() {//初始化栈while(!stack1.empty()){stack1.po ...

  7. 【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点

    [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 文章目录 [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 一.双指针 一.双指针 设 "第一个 ...

  8. 剑指 Offer 52. 两个链表的第一个公共节点

    题目:剑指 Offer 52. 两个链表的第一个公共节点 ,哈哈,我们今天来看一道很简单的题嘛,这是选自剑指 Offer 上的一道题,好了,我们一起来看看题意吧: 考虑到直接复制题目,或者截屏的方式不 ...

  9. 剑指offer之两个队列实现栈的问题

    1 问题 两个队列实现栈的插入和获取头部元素的功能 2 分析 1)获取头部元素的功能分析: 我们有2个队列,我们知道队列的特点的先进先出,而栈的特点是先进后出,比如我们有数据1,2,3,4,我们分别依 ...

最新文章

  1. Swift - final关键字的介绍,以及使用场景
  2. matlab数组存字符串,MATLAB字符串数组存储为CSV格式
  3. JDK 8与JDK 10:三元/拆箱的区别
  4. 微型计算机技术6,微型计算机技术课后习题6-8章答案.ppt
  5. SQL Server文本和图像函数
  6. linux系统编程之文件与I/O(六):fcntl 函数与文件锁
  7. 【SpringMVC】SpringMVC: @RequestBody 和@ResponseBody 注解详解 NoHandlerFoundException
  8. 5.递归实现,把M元用最少的硬币来凑。不同面值的硬币,有10元,5元,2元,1元。...
  9. Java设计模式之适配器模式详解
  10. vue-elementui制作表格(二)
  11. 教你怎么用三种办法找到发给你QQ的坦白说的那个人
  12. DataV阿里云可视化(地图下钻、数据获取) - 文档篇
  13. WindowsMobile6之“HTC Touch” - iphone的强大竞争对手
  14. Tomcat使用总结
  15. mysql 实现异地同步_MySQL 异地同步问题
  16. 2020.9.10丨Pacbio技术三代建库、测序原理
  17. 信息化 vs 数字化
  18. Apollo坐标系转换
  19. jmeter配置原件
  20. 抢红包 html 模板,微信抢红包源码和模拟demo

热门文章

  1. 「完结」你对深度学习模型的理解是否足够深刻,这12篇文章了解下
  2. 所有你要知道的 BERT 模型压缩方法,都在这里!
  3. 「图像分割模型」编解码结构SegNet
  4. AI芯片爆火 但初创公司场景落地难
  5. 马尔可夫模型与条件随机场模型
  6. 心得丨吴恩达Deeplearning.ai 全部课程学习心得分享
  7. 185页深度报告 扒一扒AI金融的老底【附下载】
  8. 推荐|5种商业AI产品的技术架构设计!
  9. LeCun论战Markus:AI是否需要类似人类的认知能力?
  10. 官宣:程序员被纳入新生代农民工!