题目描述

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

题解一:
 //stack2有元素就pop,没有元素就将stack1中所有元素倒进来再pop
     public static void push(int node) {
          stack1.push(node);
     }
     public static int pop() {
         if(stack1.isEmpty()&&stack2.isEmpty()){
             throw new RuntimeException("Queue is empty!");
         }
         if(stack2.isEmpty()){
             while (!stack1.isEmpty()){
                 stack2.push(stack1.pop());
             }
         }
         return stack2.pop();
     }
题解二:
 //每次psuh是时先将stack2清空放入stck1(保证选入的一定在栈底),stack2始终是用来删除的
     //在pop前,先将stack1中中的数据清空放入stack2(保存后入的在栈底),stack1始终用于push
     public static void push01(int node) {
         while(!stack2.isEmpty()){
             stack1.push(stack2.pop());
         }
         stack1.push(node);
     }

     public static int pop01() {
         while (!stack1.isEmpty()){
             stack2.push(stack1.pop());
         }
         return stack2.pop();
     }

测试:

 public static void main(String[] args) {
         String[] order={"PUSH_1","PUSH_2","PUSH_3","POP","POP","PUSH_4","POP","PUSH_5","POP","POP"};
         for(int i=0;i<order.length;i++){
             String s = order[i].toString();
             String[] strings = s.split("_");
             if(strings[0].equals("PUSH")){
                 int parseInt = Integer.parseInt(strings[1]);
                 push(parseInt);
             }
             if(strings[0].equals("POP")){
                 int pop = pop();
                 System.out.print(pop+" ");
             }
         }
     }
 输出:1 2 3 4 5

【剑指Offer】05、用两个栈实现队列的更多相关文章

  1. 剑指offer——05用两个栈实现队列(Python3)

    思路:(转) 代码: # -*- coding:utf-8 -*-class Solution: stack1 = [] stack2 = [] def push(self, node): self. ...

  2. 《剑指offer》用两个栈实现队列

    本题来自<剑指offer> 用两个栈实现队列 题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 队列定义:先进先出 栈定义:先进后出 要 ...

  3. 剑指 Offer 09. 用两个栈实现队列

    剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的 ...

  4. [Leetcode]225. 用队列实现栈 、剑指 Offer 09. 用两个栈实现队列

    ##225. 用队列实现栈 如题 ###题解 在push时候搞点事情:push时入队1,在把队2的元素一个个入队1,再交换队2和队1,保持队1除pushguocheng 始终为空. ###代码 cla ...

  5. 剑指 Offer 09. 用两个栈实现队列 +java中栈和队列的使用

    剑指 Offer 09. 用两个栈实现队列 题目链接 class CQueue { private Stack<Integer> sta1; private Stack<Intege ...

  6. 力扣 - 剑指 Offer 09. 用两个栈实现队列

    目录 题目 思路 代码 复杂度分析 题目 剑指 Offer 09. 用两个栈实现队列 思路 刚开始想的是用stack1作为数据存储的地方,stack2用来作为辅助栈,如果添加元素直接push入stac ...

  7. 菜鸟刷题路:剑指 Offer 09. 用两个栈实现队列

    剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的 ...

  8. 【Java】 剑指offer(8) 用两个栈实现队列

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集  题目 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数append ...

  9. [剑指offer]09用两个栈实现队列插入和删除操作,C++实现

    原创博文,转载请注明出处! # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 用两个栈实现队列的插入和删除操作 2.思路 栈服从先入后出的原则处理数据,队列服从先入先出的原则处理数 ...

  10. Go语言实现:【剑指offer】用两个栈实现队列

    该题目来源于牛客网<剑指offer>专题. 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. Go语言实现: var list1 = list.New( ...

随机推荐

  1. 优雅地关闭worker进程

    关闭nginx两种方式 nginx -s stop  立即停止nginx进程  nginx -s quit 优雅地关闭worker进程 开始优雅的关闭worker进程后 01设置定时器 worker_ ...

  2. vcs/verdi filist

    . 现在很多verilog 的filelist 文件中用如下形式来指定文件所在的目录就行了,而不必指定具体文件 ./testbench/ppc460_PLB4/p464s_test_top_tb.v ...

  3. 带大家用40行python代码实现一个疫情地图

    最近两个月,因为新冠病毒无情的肆虐,相信会给每个中国人的记忆中画上重重的一笔.到今天为止,疫情形势依然十分严峻,虽然除湖北外的其他省份已经连续十一天确诊人数下降,但是接下来还有将近至少1.6亿的人口迁 ...

  4. Go语言实现:【剑指offer】链表中倒数第k个结点

    该题目来源于牛客网<剑指offer>专题. 输入一个链表,输出该链表中倒数第k个结点. Go语言实现: type ListNode struct { Val int Next *ListN ...

  5. SPH液面重构过程中的问题

    使用粒子方法进行流体特效模拟需要进行液面重构,构造出流体的自由表面,液面重构方法也是一个独立的研究方向,针对其的研究已经有了很多成果,包括液面的平滑度.精度和并行效率等. 在这里,主要是记录一下我在液 ...

  6. NR / 5G - MAC Scheduler

  7. 15-cookie技术和session技术的联系和区别

    ​1. 联系: *session实现依赖于Cookie 2. session问题: * 由服务器创建,存储在服务器 * 当浏览器关闭时,服务器不关闭,再次打开浏览器时, 默认获得的不是同一个sessi ...

  8. win10电脑搭建网站

    新建网站之后,IIS错误提示是:在计算机“.”上没有找到服务W3SVC,需要在“启动或关闭windows功能”添加.net 3.5下面的两个程序. https://img-blog.csdn.net/ ...

  9. RF-ui自动化

    1.关于时间等待 Wait Until Keyword Succeeds      3x      300ms       Wait Until Element Is Visible      ${x ...

  10. CentOS与Ubuntu的区别

    学习博客:https://www.cnblogs.com/lirongzheng/p/8250511.html 更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc ...