0

在Java中,有没有一种简单的方法可以在O(n)时间内从无序的数字集合中创建一个PriorityQueue,但是顺序相反?PriorityQueue 的构造函数中没有一个同时接受集合和比较器来指定排序。我知道你可以创建一个 PriorityQueue 指定一个比较器,然后调用 addAll 来添加所有无序的数字。但是,我认为 addAll 会单独添加每个值,而不是堆积无序的集合,所以我认为这不会是 O(n) 时间。

4

2 回答 2

0

一种解决方法是首先否定您的数字,然后在 O(n) 中从它们中创建一个堆。稍后,您只需要记住在从堆中检索这些数字后将其取反即可。

于 2012-11-28T01:00:38.923 回答
0

addAll 具有 O(n*log(n)) 复杂度,所以这并不可怕。

我不知道你从哪里得到的想法是从无序的数字集合中创建一个 PriorityQueue 具有 O(n),我认为它与 addAll 相同。

于 2012-11-28T00:48:49.513 回答