o(klogn)解决方案很容易找到第k个最小值。这里O(klogk) time algorithm to find kth smallest element from a binary heap是一个O(klogk)解决方案。但我想的是一个算法,如果正确的话可能是o(k)。从最小堆中,取出前k个元素(前k个节点,逐级移动)并将它们存储在一个数组中。现在最大限度地堆积这个数组自下而上需要o(k)时间。这个堆的根将是所需的答案。任何人都可以看到这个算法的缺陷吗?
答案 0 :(得分:3)
考虑这个例子
1
2 11
3 4 12 13
如果你想获得第3分钟的元素,它将不会在3个第一个节点中。