我想从对象数组(某些自定义类)中获取顶部K元素。我为我的班级定义了一个比较器,可以正常工作。阵列的大小非常非常大。由于我只需要最高K元素,因此我计划使用大小为K的优先队列来保持我的空间复杂度为常数O(k)。当队列已满时在优先级队列(Java)中插入一个元素
我使用了构造函数PriorityQueue(int initialCapacity,Comparator comparator)。
当我将优先级队列的大小保持为K时,当我尝试删除K个元素时,它给了我一个错误;可能是因为一些大小的限制。但是,如果我使K + 1的大小,它工作正常。总是。
我想了解PriorityQueue的容量属性如何工作。它是无界的吗?如果是的话,初始化队列容量有什么用处。
“当我尝试删除K元素时,它给了我一个数组”。你的意思是“它给我一个*错误* ...”?如果是这样,*什么*错误? – EJP
我重复一遍。 **什么**错误? – EJP
@EJP:其实我看不到错误。这是一个黑客等级问题,如果我保持K的大小,测试用例就会失败。它通过K + 1。 –