leetcode-10/9【堆相关】

news/2024/10/21 10:08:45/

1.数组中的第K个最大元素【215】

思路:
        1.1.要使得时间复杂度为O(n),自己实现大顶堆,通过K次调整,顶部元素就是想要的第K个最大元素

        1.2.实现大顶堆的过程中,先建堆,建堆是利用递归,本质上是从下到上地进行大顶堆的调整,因为如果从上到下,只能实现局部的大顶堆,有可能会漏掉一些元素没调整

        1.3.叶子节点本身就满足大顶堆的性质,所以不需要调整,只需要从倒数第2排进行调整即可,即heapSize / 2 - 1

        1.4.对于某个堆进行调整的时候,判断左子树2 * i + 1,右子树 2 * i + 2,和根节点i,如果左右子树有比i的值大的,取更大的作为largest最大节点,与根节点进行交换,并且递归地调整largest位置的子树符合大顶堆的性质。注意!!交换的只是值,但是largest索引没变,其子树还是原来位置的子树

2. 前K个高频元素

思路:
        2.1. 先用哈希表对元素以及元素出现的次数进行存储,之后对value即出现次数进行排序即可

        2.2.要求算法时间复杂度优于O(nlogn),我采用堆排序,利用PriorityQueue优先队列,定义排序器规则,实现小顶堆。由此,最小的元素在队列首部

        2.3.取前K个高频元素,因此优先队列实现的堆的大小为K即可

        2.4.有新的元素来的时候,如果大小小于K,就直接进入队列;否则,如果小顶堆顶部元素小于新的元素,则将顶部元素弹出,新元素进入队列。且PriorityQueue会自动按照排序器规则调整小顶堆


http://www.ppmy.cn/news/1538084.html

相关文章

BERT论文解读及情感分类实战(论文复现)

BERT论文解读及情感分类实战(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 BERT论文解读及情感分类实战(论文复现)简介BERT文章主要贡献BERT模型架构技术细节任务1 Masked LM(MLM)任务2 N…

【STM32单片机_(HAL库)】5-1-1【独立看门狗IWDG】独立看门狗IWDG配置步骤

独立看门狗IWDG工作原理 溢出时间计算 独立看门狗IWDG配置步骤

MVC、MVP和MVVM之间的区别

MVC(Model-View-Controller)隔开业务和UI(一对一) 角色划分: Model:负责处理数据和业务逻辑,通常包括数据的存储、检索和更新等操作。 View:负责展示用户界面,接收用户输…

Spring Boot读取resources目录下文件(打成jar可用),并放入Guava缓存

1、文件所在位置&#xff1a; 2、需要Guava依赖&#xff1a; <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>3、启动时就读取放入缓存的代码&#xf…

iOS18 第三库YYCache中sqlite3_finalize(stmt)调用报错修复

YYCache的YYKVStorage类中的有sqlite3_finalize(stmt)调用时报错一劳永逸无损修复 .h #import "YYKVStorage.h"NS_ASSUME_NONNULL_BEGIN interface YYKVStorage (Fix) property (nonatomic, readonly) NSString *path; ///< The path of this storage. p…

Fortran 学习笔记001

1.输入输出及声明 1.1 Fortran程序的主要结构 程序通常以program描述来开头&#xff0c;后接定义的程序名&#xff08;可以省略&#xff0c;但建议使用并取有意义的名称&#xff0c;便于阅读&#xff09;&#xff0c;最后以end描述结尾&#xff0c;可以有三种方式&#xff1a…

【机器学习】逻辑回归|分类问题评估|混淆矩阵|ROC曲线|AUC指标 介绍及案例代码实现

文章目录 逻辑回归逻辑回归简介逻辑回归的数学基础逻辑回归原理概念损失函数 逻辑回归API函数和案例案例癌症分类预测 分类问题评估混淆矩阵分类评估方法 - 精确率 召回率 F1ROC曲线 AUC指标案例AUC 计算的API分类评估报告api 电信客户流失预测案例 逻辑回归 逻辑回归简介 ​…

UniApp适合哪些场景

UniApp作为一款跨平台的移动应用开发框架&#xff0c;因其高效、灵活和强大的特性&#xff0c;适用于多种应用场景。以下是一些UniApp适用的主要场景&#xff1a; 多平台应用开发&#xff1a; 对于需要同时在iOS、Android、Web以及各种小程序平台发布的应用&#xff0c;UniApp可…