The kth largest element in max-heap 最大堆的第k大元素
2015-07-16 02:59
253 查看
给定一个最大堆,找出第k大的节点。
解法:
建一个最小堆 minHeap来解决此题.
1 取最大堆的根节点,放入minHeap;
2 移除minHeap的根节点,并把该根节点在最大堆的两个子节点插入minHeap(插入过程保证heap的性质);
3 回到1.2 步。
minHeap的节点数在不断增加,但是不会超过2k。minHeap插入节点的复杂度是O(2k)=O(k)。整个算法的复杂度是kO(k)。
类似题目:
1. 有序矩阵中查找第k小的元素 Kth smallest
element in a row-wise and column-wise sorted 2D array
2. median of two sorted array
解法:
建一个最小堆 minHeap来解决此题.
1 取最大堆的根节点,放入minHeap;
2 移除minHeap的根节点,并把该根节点在最大堆的两个子节点插入minHeap(插入过程保证heap的性质);
3 回到1.2 步。
minHeap的节点数在不断增加,但是不会超过2k。minHeap插入节点的复杂度是O(2k)=O(k)。整个算法的复杂度是kO(k)。
类似题目:
1. 有序矩阵中查找第k小的元素 Kth smallest
element in a row-wise and column-wise sorted 2D array
2. median of two sorted array
相关文章推荐
- servlet--多线程问题及java内存模型
- Methods Collection of Enumerating Com Port in Windows, by C
- 在dos环境运行java程序
- uva 11107 Life Forms(后缀数组)
- 关于瞎折腾的经验
- 源码详解openfire保存消息记录_修改服务端方式
- 配置java的环境变量
- 深度搜索的应用----无向图的连通性
- hdu 1082, stack emulation, and how to remove redundancy
- 关于优酷视频上传出现的错误问题
- 《数据结构》--线性表
- samba安装卸载后再安装 不能找到smbpasswd命令的解决方法
- 《数据结构》--和多项式链表
- 星座与性格
- Dungeon Game
- PAT乙级 1013. 数素数
- 微软“小冰”识狗与人工神经网络(I)
- Java SE 学习笔记(一)
- 如何用Excel打开CSV文件
- 选项卡内容容器切换程序