给定一个包含n个元素的列表,并给出K和列表中Kth元素的值。需要在列表中构建0(n)中的堆,在O(log n)中堆积的任何其他插入(添加不在列表中的其他元素),在O(n)中删除, 无论O(k)中堆中发生什么变化,如何找到最大的k元素? 例如:给定列表(2,4,6,10,9,12)并给出k = 3和值= 9, k最大的是10,9,12。之后如果删除10和12,k bigggest将是4,6,9。
答案 0 :(得分:0)
维护:
在任何时间点,最大的k数都在较小的堆中。大堆的根是插入较小堆的候选者。
插入号码后:
删除号码后:
此算法使用您提到的复杂性界限。