首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在O(1)时间内找到Max-Heap的第10个最大元素

在O(1)时间内找到Max-Heap的第10个最大元素
EN

Stack Overflow用户
提问于 2017-05-14 16:46:07
回答 1查看 846关注 0票数 0

我正在尝试实现一个算法,在O(1)时间内找到具有n个不同元素的Max-Heap的第10个最大元素。

我试图绘制它并使用heap属性,但随着我在heap中越深入,它就变得越来越复杂。这是我做的一个草稿,也是我坚持的地方--因为我们有不同的元素和heap属性,我们知道父元素总是大于它的子元素。因此,根是最大的元素。下一个最大元素是根的子元素之间的较大元素。

编辑:我也考虑过将较大者的儿子与另一位父母的儿子进行比较。如果它们中至少有一个大于另一个父元素,根据heap属性,我们从最大的子元素开始继续,直到我们有10个元素,但这并不总是正确的,因为当我们深入下去时,可能没有元素,现在我们需要再次返回。

任何解释,甚至是伪代码,都将非常有用。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2017-05-14 16:54:56

一种可能的解决方案,很可能不是fasted的,但仍然是O(1)是提取堆的所有顶部元素(以树的形式)到10的级别,然后对它们进行排序并返回第10个元素。

请注意,提取的元素的数量是有界的,这导致O(1)的努力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43962017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档