在Java中,我如何查看()PriorityQueue中的前k个元素?

Leo*_*Leo 1 java algorithm data-structures

我在文档中看到,PriorityQueue.peek()允许我访问O(1)中队列的头部,但是如果我需要访问队列中的k个顶部元素呢?我会使用poll()k次,但需要O(log(N)),有没有办法在恒定时间内完成?

use*_*ica 6

不.如果你可以在恒定的时间内完成它,你可以通过堆积一个数组然后找到前N个项来进行线性时间的比较排序,其中N就是所有项.