使用优先队列,将非负数变为非正数存储,结果变成非负数
class Solution {
public int[] getLeastNumbers(int[] arr, int k) {
if(k == 0) return new int[0];
int[] nums = new int[k];
Queue<Integer> queue = new PriorityQueue<>();
for(int i = 0; i < k; i++){
queue.add(-1 * arr[i]);
}
for(int i = k; i < arr.length; i++){
if(-1 * arr[i] > queue.peek()){
queue.poll();
queue.add(-1 * arr[i]);
}
}
for(int i = 0; i < k; i++){
nums[i] = -1 * queue.poll();
}
return nums;
}
}