如果我错了,请纠正我,但我认为PriorityQueue(Collection c)构造函数将在时间O(n)中从集合创建一个min-heap。但是,我找不到一个构造函数,我可以传递一个集合和一个比较器(为了将最小堆转换为最大堆)。所以我想知道是否有办法使用PriorityQueue从O(n)中的数组(比如int数组)构造最大堆?
答案 0 :(得分:1)
不,将一组元素排列在最小堆中并不能为将它们重新排列成最大堆提供任何优势。此外,您似乎假设接受集合的PriorityQueue
构造函数具有O(n)
渐近复杂度。这似乎是合理的 - 甚至可能 - 但没有记录,因此依赖它是不安全的。