• Java用两个堆实现队列先进先出--转载


    思路:入队列时用堆1压入所有元素,出队列时先把堆1的元素逐个取出放到堆2里,再从堆2里逐个弹出元素即可实现队列的先进先出.
    入队列 0 1 2 3 4, 堆1:4 3 2 1 0, 堆2:0 1 2 3 4, 出队列: 0 1 2 3 4

    import java.util.*;
    public class QueueWithTwoStack {
      private Stack inbox=new Stack();
      private Stack outbox=new Stack();
    
      public void enqueue(int item){
        inbox.push(item);
      }
    
      public int dequeue(){
        //如果outbox是空的,while循环,把所有的inbox里的元素全部push到outbox:0 1 2 3 4
        if(outbox.isEmpty()){
          while(!inbox.isEmpty()){
            outbox.push(inbox.pop());
          }
        }
        // 一次for循环,从outbox里取出一个元素
        return (int)outbox.pop();
      }
    
      public static void main(String args[]){
        QueueWithTwoStack test=new QueueWithTwoStack();
        // push inbox: 4 3 2 1 0
        for (int i=0;i<5;i++){
          test.enqueue(i);
        }
        // pop
        for (int i=0;i<5;i++){
          int j= test.dequeue();
          System.out.println(j);
        }
      } /**output: 0 1 2 3 4 */
    }
    ➜  /tmp javac QueueWithTwoStack.java
    Note: QueueWithTwoStack.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    ➜  /tmp java QueueWithTwoStack      
    0
    1
    2
    3
    4

    原文:https://blog.csdn.net/shendezhuti/article/details/78326489

    参考java堆:https://www.runoob.com/java/java-stack-class.html

    如果没有一直坚持,也不会有质的飞跃,当生命有了限度,每个人的价值就会浮现。

    船长博客,期待共同交流提高!

    本文如对您有帮助,记得点击右下边小球【赞一下】,热烈期待您关注博客 n(*≧▽≦*)n

    0成本创业_月入5000被动收入

  • 相关阅读:
    mongodb复制集搭建
    mongodb分片集群搭建
    mongodb安装、运行
    吉他“和弦”是什么?
    NoSQL 简介
    淘汰算法 LRU、LFU和FIFO
    Java遍历Map对象的四种方式
    终于搞懂了shell bash cmd...
    如何为openwrt生成补丁
    linux内核启动时报错ubi0 error: validate_ec_hdr: bad data offset 256, expected 128
  • 原文地址:https://www.cnblogs.com/v5captain/p/14315378.html
Copyright © 2020-2023  润新知