LintCode 堆化详解及实例代码
发布时间 - 2026-01-11 00:49:19 点击率:次LintCode 堆化详解及实例代码

给出一个整数数组,堆化操作就是把它变成一个最小堆数组。
对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子。
样例
给出 [3,2,1,4,5],返回[1,2,3,4,5] 或者任何一个合法的堆数组
挑战
O(n)的时间复杂度完成堆化
说明
什么是堆?
堆是一种数据结构,它通常有三种方法:push, pop 和 top。其中,“push”添加新的元素进入堆,“pop”删除堆中最小/最大元素,“top”返回堆中最小/最大元素。
什么是堆化?
把一个无序整数数组变成一个堆数组。如果是最小堆,每个元素A[i],我们将得到A[i * 2 + 1] >= A[i]和A[i * 2 + 2] >= A[i]
如果有很多种堆化的结果?
返回其中任何一个。
分析:一开始想到堆化么肯定就是堆排序吧,粗粗一想貌似复杂度是O(nlgn),后来参考该文章才知道O(nlgn)是复杂度上限,平均是O(n)
代码:
class Solution {
public:
/**
* @param A: Given an integer array
* @return: void
*/
void heapify(vector<int> &A) {
// write your code here
int n = A.size()-1;
for(int i=n/2;i>=0;i--)
heapify(A,i);
}
void heapify(vector<int> &A,int i)
{
int l = 2*i+1;
int r = 2*i+2;
int smallest = i;
if(l<A.size()&&A[l]<A[smallest])
smallest = l;
if(r<A.size()&&A[r]<A[smallest])
smallest = r;
if(smallest!=i)
{
swap(A[i],A[smallest]);
heapify(A,smallest);
}
}
};
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# LintCode
# 堆化
# 堆化详解
# 堆化实例
# LintCode-排序列表转换为二分查找树分析及实例
# 任何一个
# 堆中
# 是一种
# 把它
# 数据结构
# 才知道
# 希望能
# 谢谢大家
# 有三种
# 样例
# 有很多种
# push
# code
# size
# write
# gt
# pop
# top
# smallest
# swap
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
如何确保FTP站点访问权限与数据传输安全?
Laravel如何处理表单验证?(Requests代码示例)
微信小程序 五星评分(包括半颗星评分)实例代码
中山网站推广排名,中山信息港登录入口?
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
php结合redis实现高并发下的抢购、秒杀功能的实例
如何批量查询域名的建站时间记录?
,交易猫的商品怎么发布到网站上去?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
微信小程序 scroll-view组件实现列表页实例代码
Linux系统命令中tree命令详解
详解jQuery停止动画——stop()方法的使用
北京网站制作的公司有哪些,北京白云观官方网站?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
linux写shell需要注意的问题(必看)
如何在建站主机中优化服务器配置?
如何快速搭建支持数据库操作的智能建站平台?
晋江文学城电脑版官网 晋江文学城网页版直接进入
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在云主机上快速搭建多站点网站?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
图册素材网站设计制作软件,图册的导出方式有几种?
Laravel如何实现数据库事务?(DB Facade示例)
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
制作公司内部网站有哪些,内网如何建网站?
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel PHP版本要求一览_Laravel各版本环境要求对照
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel怎么在Blade中安全地输出原始HTML内容
再谈Python中的字符串与字符编码(推荐)
Laravel如何创建自定义Artisan命令?(代码示例)
JavaScript Ajax实现异步通信
Laravel路由怎么定义_Laravel核心路由系统完全入门指南

