java中的优先队列会按照我们给的排序规则(默认升序排列)
进行排序,自动比较元素大小,保持队列中的元素有序
class Solution {
//使用优先队列 只存储k个元素 后随添加元素 随保持队列中元素的个数
public int[] smallestK(int[] array, int k) {
PriorityQueue priorityQueue = new PriorityQueue<>(
new Comparator() {
@Override
//降序排列 存储几个较小的元素
public int compare(Integer o1, Integer o2) {
return o2.intValue() - o1.intValue();
}
}
);
for (int num : array) {
priorityQueue.offer(num);//添加元素
if(priorityQueue.size()> k ){
priorityQueue.poll();//删除元素
}
}
int[] nums = new int[priorityQueue.size()];
for (int i = 0 ; i < nums.length; i++){
nums[i] = priorityQueue.poll();
}
return nums;
}
}



