剑指 Offer 40. 最小的k个数
class Solution {
public int[] getLeastNumbers(int[] arr, int k) {
if (k <= 0)
return new int[0];
int[] ans = new int[k];
PriorityQueue<Integer> minHeap = new PriorityQueue<>((o1, o2)->(o2 - o1));
for (int num : arr) {
if (minHeap.size() < k) {
minHeap.add(num);
} else if (num < minHeap.peek()) {
minHeap.remove();
minHeap.add(num);
}
}
for (int i = 0; i < k; i++) {
ans[i] = minHeap.remove();
}
return ans;
}
}