力扣labuladong——一刷day94

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
    • `二叉堆(Binary Heap)没什么神秘,性质比二叉搜索树 BST 还简单。其主要操作就两个,sink(下沉)和 swim(上浮),用以维护二叉堆的性质。其主要应用有两个,首先是一种排序方法「堆排序」,第二是一种很有用的数据结构「优先级队列」`
  • 一、二叉堆


前言

二叉堆(Binary Heap)没什么神秘,性质比二叉搜索树 BST 还简单。其主要操作就两个,sink(下沉)和 swim(上浮),用以维护二叉堆的性质。其主要应用有两个,首先是一种排序方法「堆排序」,第二是一种很有用的数据结构「优先级队列」

一、二叉堆

public class MaxPQ<Key extends Comparable<Key>> {// 存储元素的数组private Key[] pq;// 当前 Priority Queue 中的元素个数private int size = 0;public MaxPQ(int cap) {// 索引 0 不用,所以多分配一个空间pq = (Key[]) new Comparable[cap + 1];}/* 返回当前队列中最大元素 */public Key max() {return pq[1];}/* 插入元素 e */public void insert(Key e) {...}/* 删除并返回当前队列中最大元素 */public Key delMax() {...}/* 上浮第 x 个元素,以维护最大堆性质 */private void swim(int x) {...}/* 下沉第 x 个元素,以维护最大堆性质 */private void sink(int x) {...}/* 交换数组的两个元素 */private void swap(int i, int j) {Key temp = pq[i];pq[i] = pq[j];pq[j] = temp;}/* pq[i] 是否比 pq[j] 小? */private boolean less(int i, int j) {return pq[i].compareTo(pq[j]) < 0;}/* 还有 left, right, parent 三个方法 */public class MaxPQ <Key extends Comparable<Key>> {// 为了节约篇幅,省略上文给出的代码部分...private void swim(int x) {// 如果浮到堆顶,就不能再上浮了while (x > 1 && less(parent(x), x)) {// 如果第 x 个元素比上层大// 将 x 换上去swap(parent(x), x);x = parent(x);}}public class MaxPQ <Key extends Comparable<Key>> {// 为了节约篇幅,省略上文给出的代码部分...private void sink(int x) {// 如果沉到堆底,就沉不下去了while (left(x) <= size) {// 先假设左边节点较大int max = left(x);// 如果右边节点存在,比一下大小if (right(x) <= size && less(max, right(x)))max = right(x);// 结点 x 比俩孩子都大,就不必下沉了if (less(max, x)) break;// 否则,不符合最大堆的结构,下沉 x 结点swap(x, max);x = max;}}public class MaxPQ <Key extends Comparable<Key>> {// 为了节约篇幅,省略上文给出的代码部分...public void insert(Key e) {size++;// 先把新元素加到最后pq[size] = e;// 然后让它上浮到正确的位置swim(size);}public class MaxPQ <Key extends Comparable<Key>> {// 为了节约篇幅,省略上文给出的代码部分...public Key delMax() {// 最大堆的堆顶就是最大元素Key max = pq[1];// 把这个最大元素换到最后,删除之swap(1, size);pq[size] = null;size--;// 让 pq[1] 下沉到正确位置sink(1);return max;}
}}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#将货币金额数字转大写汉字

目录 一、对输入数字的处理 二、源码 1、Main() 2.类库 一、对输入数字的处理 用正则表达式对输入的数字判断是否符合货币格式&#xff0c;小数点前的数字串的长度是否不大于13。 二、源码 1、Main() // 货币金额小写数字转大写汉字 // 小数点前数字长度<13,即不超过…

[通知]rust跟我学:文件时间属性获得方法文章已上线

大家好&#xff0c;我是带剑书生&#xff0c;开源库get_local_info的作者。目前我的付费专栏已经上线第七篇文章&#xff0c;用于介绍在实现get_local_info过程中&#xff0c;遇到该问题所使用的解决方法&#xff0c;喜欢的朋友可以去订阅了&#xff0c;19.9元&#xff0c;非常…

LTD营销枢纽(乐通达)成为杭州市中小企业数字化转型遴选服务商

为推进国家中小企业数字化转型城市试点建设&#xff0c;赋能中小企业信息化、智能化、新型工业化能力水平提升&#xff0c;杭州市经信局公开招募了具备高质量服务能力的中小企业数字化转型服务商。经过公开征集、专家评审等多个环节&#xff0c;LTD营销枢纽凭借其在数字化转型领…

计算机网络(第六版)复习提纲1

计算机网络历程 一、计算机网络体系结构 1974年 美国IBM公司&#xff1a; SNA&#xff08;系统网络体系结构&#xff09; 1977年 国际标准化组织&#xff1a; OSI/RM&#xff08;开放系统互连基本参考模型&#xff09;【抽象概念】 1983年 国际化标准组织&#xff1a; ISO 74…

东北编程语言???

在GitHub闲逛&#xff0c;偶然发现了东北编程语言&#xff1a; 东北编程语言是由Zhanyong Wan创造的&#xff0c;它使用东北方言词汇作为基本关键字。这种编程语言的特点是简单易懂&#xff0c;适合小学文化程度的人学习&#xff0c;并且易于阅读、编写和记忆。它的语法与其他编…

openai-whisper

openai-whisper 0. 参数说明1. 视频语音转文字 demo1. 提取b站视频中的音频,增加到自己的视频里,并且显示字幕1. 下载b站视频到电脑2. 提取视频中的音频3. 音频转文字4. 自己的视频去掉音频,增加新的音频和字幕 0. 参数说明 语音识别模型whisper的参数说明 1. 视频语音转文字…

Jetbrains ai assistant激活后仍无法使用,怎么回事?

用正式的ai assistant激活码激活后仍然无法使用 首先获取了ai assistant激活码&#xff0c;激活后如下 地址&#xff1a;https://web.52shizhan.cn 上图是已经激活成功了&#xff0c;但是在右侧这里打开ai assistant不可用 点击开始使用ai assistant 出错 以上是用了ai as…

java日志框架总结

一、日志框架简单分类介绍 java常用的日志框架、可以分为两组&#xff1a; 1、JCL、JUL、Log4j&#xff1b; 2、SLF4J、Log4j2、Logback&#xff1b; 其中第一组是比较早期的日志实现框架&#xff0c;JCL并不是具体的日志实现框架&#xff0c;JCL其实是定义了一…

运动模型非线性测量非线性扩展卡尔曼跟踪融合滤波算法(Matlab仿真)

卡尔曼滤波的原理和理论在CSDN已有很多文章&#xff0c;这里不再赘述&#xff0c;仅分享个人的理解和Matlab仿真代码。 之前的博文运动模型非线性扩展卡尔曼跟踪融合滤波算法&#xff08;Matlab仿真&#xff09;-CSDN博客使用扩展卡尔曼滤波算法将非线性的运动模型线性化&#…

我的年终总结2023

As a DBA 从2023年初开始&#xff0c;我就给自己定下了23年的主要任务——学习PostgreSQL数据库。虽然没有定下细致的计划&#xff0c;但总体的目标是把PG的一些基础知识学完。后来发现我想简单了&#xff0c;学习PG的成本比我想象的多的多&#xff0c;导致23年这个目标没有完…

abap smartforms 转换成pdf xtring

最近客户有一个需求是需要讲发票的smartform 发送到第三方系统。 原先的做法是&#xff0c;SAP只是发送发票数据过去&#xff0c;由第三方系统去自己创建PDF打印。 那么就遇到了一个问题&#xff0c;SAP中的发票打印产生修改的时候。第三方系统也要同步修改&#xff0c; 涉及…

葡萄酒术语“干”是什么意思呢?

一个初学品酒的人常常会感到力不从心&#xff0c;有如此多的术语&#xff0c;如甜、干、单宁、酒体等等&#xff0c;很容易让人迷失。嗯&#xff0c;就像情人眼里出西施一样&#xff0c;“好酒”因人而异。虽然品尝各种不同的葡萄酒是了解你喜欢什么的最好方法&#xff0c;但我…

3D渲染农场的优势体现在哪里?点进来,CG Magic小编告诉您!

目前&#xff0c;渲染的涉及也是越来越广的&#xff0c;无论是通过本地渲染还是云渲染&#xff0c;都是为了3D渲染效率更高。 渲染农场工作原理就是提升制作效率与降低成本的利器。无论大型制作公司还是小型工作室&#xff0c;甚至是个人用户&#xff0c;都会借助于3d渲染农场…

LLM:Scaling Laws for Neural Language Models (上)

论文&#xff1a;https://arxiv.org/pdf/2001.08361.pdf 发表&#xff1a;2020 摘要1&#xff1a;损失与模型大小、数据集大小以及训练所用计算量成比例&#xff0c;其中一些趋势跨越了七个量级以上。 2&#xff1a;网络宽度或深度等其他架构细节在很大范围内影响较小。3&…

AcWing:90. 64位整数乘法

0x00 基本算法第二题 算法标签:位运算 来源&#xff1a;《算法竞赛进阶指南》 描述 求 a 乘 b 对 p 取模的值。 输入格式 第一行输入整数a&#xff0c;第二行输入整数b&#xff0c;第三行输入整数p。 输出格式 输出一个整数&#xff0c;表示a*b mod p的值。 数据范围 …

探索Python数据结构与算法:解锁编程的无限可能

文章目录 一、引言1.1 数据结构与算法对于编程的重要性1.2 Python作为实现数据结构与算法的强大工具 二、列表和元组2.1 列表&#xff1a;创建列表、索引、切片和常用操作2.2 元组&#xff1a;不可变序列的特性和使用场景 三、字符串操作和正则表达式3.1 字符串的常见操作和方法…

第十四届蓝桥杯省赛PythonB组

思路: // f[i] 定义为从前 i 个中选的最大价值 // 如果不选&#xff0c;那么从前 i - 1 转移而来 f[i] f[i - 1]; // 如果选&#xff0c;那么 i - 1不能选&#xff0c;从前 i - 2 转移而来 &#xff0c;所以 f[i - 2] str[i] - a 1 // 至于为什么不是从前 i - 2 , i - 3 ...…

Spring Boot整和MyBatis!!!

目标&#xff1a; 实现添加功能实现查询功能实现删除功能实现修改功能添加日期转换器 1.搭建项目 1.1pom文件&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><vers…

windows编译TensorFlowServing

概述 整个编译打包过程的总体思路&#xff0c;是参照在linux下的编译流程&#xff0c;配置环境&#xff0c;执行编译命令&#xff0c;根据编译器/链接器反馈的错误&#xff0c;修改相应的源码或者相关库文件的存放路径&#xff0c;编译出windows平台下静态库和二进制执行文件。…

BuildRoot配置RTL8822CE WIFIBT模块(WIFI部分)

TinkerBoard2主板自带的无线模块为RTL8822CE&#xff0c;PCIe接口 之前在风火轮下载的Linux源码编译出来的BuildRoot根文件系统没有相关的驱动文件 [rootrk3399:/]# find . -name *.ko [rootrk3399:/]# lsmod Module Size Used by Not tainted [rootrk33…