AcWing 839. 模拟堆 2022/5/30
2024-10-21 06:43:42
关键代码:
void head_swap(int a, int b){
swap(ph[hp[a]], ph[hp[b]]);
swap(hp[a], hp[b]);
swap(h[a], h[b]);
}
思想:
如何解决插入的第 k 个数是什么?在链表中,idx 取 第几个插入的数,idx 与 k 一一对应,对于堆来说,由于堆是一棵完全二叉树,适合以下表连接各个节点之间的关系,所以应当将第几个插入的数与下标相对应。于是产生了ph[i] = a; 但在交换a, b两个位置的数时,ph[i] = a 、ph[j] = b 也需要交换,但仅仅靠swap(ph[i], ph[j])不能完全交换,还需要交换i,j,因此需要hp[a] = i, hp[b] = j数组作为ph数组的反函数进行操作。
最新文章
- lua面试基础知识
- QQ右下角图标不见了
- AJAX三种返回值方式
- Cocos2d-x使用UserDefault数据持久化实例:保存背景音乐和音效设置
- 长期支持版本(即不自动更新版本) - Flash Player 18.0.0.268
- Debian8 部署 laravel 5.3 (php7.0 + nginx)
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
- no device found for connection ‘ System eth0′问题
- XP实验报告
- 电商网站开发记录(三) Spring的引入,以及配置详解
- Linux编程 9 (shell类型,shell父子关系,子shell用法)
- MFC开发中添加自定义消息和消息响应函数
- JDK、JRE、JVM之间的关系
- Adobe Photoshop CC 2015使用及扩展工具
- Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置
- UVA548
- Codeforces Round #290 (Div. 2) 拓扑排序
- Scrum立会报告+燃尽图(十月十六日总第七次):总结工作经验,商讨未来策略
- Linux 内核分析第八周学习笔记
- unity3d的三种平面坐标系
热门文章
- STM32F0_HAL初始化系列:输入捕捉
- 学习Java Day29
- 自己从零写操作系统GrapeOS——1.GrapeOS介绍
- Nginx单服务器部署多个网站,域名
- git 合并dev分支到 master分支 (merge)
- LeetCode-19 删除链表倒数第N个结点
- 代数余子式的由来/代数余子式为什么-1的系数是ⁱ⁺ʲ?/证明一个n阶行列式,如果其中第i行(或第j列)所有元素除aᵢⱼ外都为零,那么这行列式等于aᵢⱼ与它的代数余子式的乘积/证明行列式按行(列)展开法则:n(n>;1)阶行列式等于它任意一行(列)的所有元素与它们对应的代数余子式的乘积的和。
- 后台Mysql存储过程调用
- lg9018题解
- xlwings rest api