zoukankan      html  css  js  c++  java
  • Java优先队列一些问题

    无论怎么初始化,优先队列的长度不是固定的,你add一个,size就会++,满了就会扩容。

    所以必须手动维护优先队列的大小,比如topK问题。

    定义一个len,len<max的时候就直接add,len++

    满了就poll之后,再add

    将一堆无序的元素放进优先队列中,每次调用poll,都能获得当前小顶堆,也就是里面的最小值。

    优先队列默认是小顶堆,可以自己传入排序方法。大顶堆就传相反的排序方法就好了。

    //我定义的类
    public static class Node{
    
            int cap;
            int pro;
            public Node(int x,int y){
                cap = x;
                pro = y;
            }
    
    
        }
    
    
    PriorityQueue<Node> priorityQueue = new PriorityQueue<>(new Comparator<Node>() {
                @Override
                public int compare(Node o1, Node o2) {
                    if(o1.pro>o2.pro)
                        return -1;
                    if(o1.pro<o2.pro)
                        return 1;
                    return 0;
                }
            });

    lamda表达式也可以

    不用new comxxxx这个类,直接传函数即可

    参数类型不用填,会根据上下文给你填好

    PriorityQueue<Node> priorityQueue = new PriorityQueue<>((o1,o2)->{
                    if(o1.pro>o2.pro)
                        return -1;
                    if(o1.pro<o2.pro)
                        return 1;
                    return 0;
            });
  • 相关阅读:
    ng的ngModel用来处理表单操作
    ionic改tab文字和icon图片的颜色
    ionic安装遇到的一些问题
    ionic运行测试
    安卓sdk安装教程
    ionic教程
    ng 构建
    ng websocket
    ng依赖注入
    Python: 定时器(Timer)简单实现
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9277662.html
Copyright © 2011-2022 走看看