设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
示例:
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]
提示:
0 <= len(arr) <= 100000
0 <= k <= min(100000, len(arr))
class Solution {
public int[] smallestK(int[] arr, int k) {
if(arr==null||k<=0){
return new int[0];
}
PriorityQueue<Integer> p=new PriorityQueue<>(arr.length);
for(int i=0;i<arr.length;i++){
p.offer(arr[i]);
}
int[] ret=new int[k];
for(int i=0;i<k;i++){
ret[i]=p.poll();
}
return ret;
}
}