【发布时间】:2014-05-21 12:11:34
【问题描述】:
分别考虑大小为 n1 和 n2 的两个最小堆 H1、H2,使得 H2 中的每个节点都大于 H1 中的每个节点。
如何将这两个堆合并为一个堆 "H" ,在 O(n2) 中(不是 O(n^2)..)?
(假设堆表示的数组大小 > n1+n2)
【问题讨论】:
-
提示:如果你有两个排序列表 L1 和 L2,L2 的每个元素都大于 L1 的每个元素,你怎么能在 O(n) (= O(n2)) 时间?堆有点像最后变宽的排序列表。在两个堆上对应的操作可能是什么样的?
-
@otus 为什么要删除答案?它似乎符合约束条件。
标签: algorithm data-structures heap