当前位置: 首页 > article >正文

优先级队列面试题详解

题目链接:

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/smallest-k-lcci/description/


 

解题思路:实际上,这题属于优先级队列中的Top-K问题,需要注意的是我们建立的优先级队列默认是小根堆,本题要找的是最小的k个数,应实现Comparator接口,重写compare方法


 

代码实现:

class Cmp implements Comparator<Integer>{
//想要改为大根堆,实现Comparator接口,重写compare方法
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1);
    }
}

class Solution {
    public int[] smallestK(int[] arr, int k) {
        if(k==0){
            return new int[k];
        }

        
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new Cmp());
        // 将数组前k个元素放入优先级队列中,建立大根堆
        for (int i = 0; i < k; i++) {
            priorityQueue.offer(arr[i]);
        }

        int j = k ;
        int[] array = new int[k];

        //结束条件--数组遍历完成
        while (j < arr.length) {
            if (arr[j] < priorityQueue.peek()) {
                priorityQueue.poll();
                priorityQueue.offer(arr[j]);
            }
            j++;
        }
        
        //筛选好后放入数组中用于放回
        for (int z = 0; z < k; z++) {
            array[z] = priorityQueue.poll();
        }

        return array;
    }

}


http://www.kler.cn/a/287239.html

相关文章:

  • 基于Java Springboot甘肃旅游管理系统
  • angular的promise实战案例
  • elasticsearch是如何实现master选举的?
  • 力扣-Mysql-3322- 英超积分榜排名 III(中等)
  • Spark RDD 的 combineByKey、cogroup 和 compute 算子的作用
  • 手搓神经网络(MLP)解决MNIST手写数字识别问题 | 数学推导+代码实现 | 仅用numpy,tensor和torch基本计算 | 含正反向传播数学推导
  • link标签的用途
  • 微软 Maia 100 酷炫登场,强势叫板英伟达!
  • 找出成员满足条件的整个分组
  • el-dropdown不能自己在每一项添加方法,控制台会报错
  • 如何在 PostgreSQL 中安装和配置空间数据支持
  • Linux Kernel 6.12版预计将支持在崩溃后显示二维码 后续可以解码排查错误
  • docker导出导入镜像
  • golang并发编程—— 并发模式
  • 收纳程序 源码
  • 小程序中使用page-container来做弹窗
  • 数据库表的分类
  • Redis与SpringMVC的整合与最佳实践
  • LDR6023:革新手机转接器体验,快充与OTG并存的科技杰作
  • 【mysql】03通过命令行快速导出带字段名的csv格式数据
  • QT Quick QML 添加海康威视SDK云台控制模块
  • java操作日期时间类
  • v-bind,v-on与简写:和@有什么区别?
  • [Linux网络]TCP三次握手和四次挥手的连接建立和断开
  • win10环境下gvim离线配置插件的一些补充
  • 8.22