知识点:堆

题目:
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。
示例 1:

输入:

arr = [3,2,1], k = 2

输出:

[1,2] 或者 [2,1]

示例 2:

输入:

arr = [0,1,2,1], k = 1

输出:

[0]

限制:

0 <= k <= arr.length <= 10000 0 <= arr[i] <= 10000

我们用一个大根堆实时维护数组的前 k 小值。首先将前 k 个数插入大根堆中,随后从第 k+1个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入当前遍历到的数。最后将大根堆里的数存入数组返回即可。

offer​(E e)

将指定的元素插入此优先级队列。不能添加null元素。

peek()

获取队列顶部元素——仅仅获取,没有删除

po

【大顶堆】最小的k个数相关推荐

  1. 剑指Offer_29_最小的K个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 解题思路 解法1 大顶堆,存放k个数字,遍历数组,当堆的数量小于k ...

  2. c语言大顶堆数组维护,图解大顶堆的构建、排序过程

    这两天在复习大顶堆和小顶堆,比起两年前的懵懵懂懂,这次理解起来就容易了一些.又翻看了一下自己之前的笔记数据结构与算法之PHP排序算法(堆排序),发现自己这次查阅资料,和之前的思路不太一样,遂写下这篇笔 ...

  3. 大顶堆的构建、排序过程

    一.什么是堆 堆是一种非线性结构,可以把堆看作一棵二叉树,也可以看作一个数组,即:堆就是利用完全二叉树的结构来维护的一维数组. Key[i]<=key[2i+1]&&Key[i] ...

  4. 剑指Offer - 面试题40. 最小的k个数(排序/大顶堆)

    1. 题目 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:arr = [3,2,1], k ...

  5. 大顶堆及小顶堆求最大或最小K个数

    小顶堆 根节点数值小于或等于左右孩子节点数值,其中顶节点数最小 大顶堆 根节点数值大于或等于左右孩子节点数值,其中顶节点数最大 PriorityQueue PriorityQueue为优先级队列,遵循 ...

  6. 【剑指Offer】最小的k个数---大顶堆 Java

    题目:输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 求数组中最小(最大)的n个数通常可以使用大顶堆(小顶堆) ...

  7. NO29、最小的K个数(应该记住大顶堆和小顶堆的区别与联系,并不难)

    29.最小的K个数 应该记住大顶堆和小顶堆的区别与联系,并不难 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 示例1 输入 ...

  8. 大顶堆,n个数中找最小的k个数

    package com.alo.offer;import java.util.Scanner;/*** n个数中找到最小的m个数 使用大顶堆* n个书中找到最大的m个数 使用小顶堆* @author ...

  9. 最小的K个数(手写大顶堆和用优先级队列比较)

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 题目链接:https://www.nowcoder.com/prac ...

  10. 《剑指offer》NO40 最小的K个数 大顶堆实现 详解 <Java实现>

    public class Solution2_大顶堆 {//用PriorityQueue 来实现一个大顶堆. 当队内元素个数大于K个并且新入的元素小于 大顶堆的最大值,那么就出队列,新的进入.所有元素 ...

最新文章

  1. dev treeview控件_在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件
  2. js 获取元素的几种方法
  3. 平台电商类的增长策略:从用户激励到养成类游戏
  4. sklearn线性回归
  5. datetime(6) mysql_MySQL中DATETIME、DATE和TIMESTAMP类型的区别
  6. 数学--数论--HDU 2582 F(N) 暴力打表找规律
  7. 黑马程序员-WEB前端与移动开发就业班
  8. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等
  9. 【Pytorch神经网络理论篇】 11 卷积网络模型+Sobel算子原理
  10. oracle10gasmcmd,ORACLE 10g中ASMCMD使用及ASM文件
  11. java摘要_java 摘要
  12. jsp和mysql答辩_如何应对JSP连接MySQL数据库问题_网站数据库怎么连接到网页答辩问题...
  13. amazon aws ip check
  14. 2022年谷歌Chrome等浏览器在线打开编辑保存微软Office/金山WPS的Word、Excel和PPT技术方案大全
  15. 2.线程和进程的含义和区别,进程间通信方式有哪些?
  16. Vue warn 屏蔽
  17. 多模块渗透测试框架PTF
  18. 使用 JW Player 播放RTMP 流
  19. 【挖矿程式】oCam 萤幕录影软体竟然藏有挖矿程式 (BRTSvc)(转)
  20. gitlab ip变更runner拉取代码失败、shell启动springboot项目启动起来。

热门文章

  1. MacIOS Bonjour
  2. linux怎么在终端里查系统信息,Neofetch:在终端中显示Linux系统信息
  3. 小白也能看懂的seaborn入门示例
  4. html怎么设置两块区域,将两个视频一左一右拼接 可裁剪画面并设置视频画面大小及位置...
  5. linux双系统启动引导,linux windows 双系统并存与启动引导
  6. 记一次云服务器配置mysql 远程连接失败的解决方案
  7. EAS融资租赁系统(财务业务一体化)
  8. 《只是为了好玩:Linux之父林纳斯自传》读后感
  9. Simple Operations on Sequence
  10. 印刷电路板(PCB)的制作工艺流程