面试题 17.14. 最小K个数
Difficulty: 中等
设计一个算法,找出数组中最小的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))
Solution
Language: 全部题目
class Solution {
public int[] smallestK(int[] arr, int k) {
Queue<Integer>q = new PriorityQueue<>(k+1);
for(int x:arr)q.offer(x);
int[]p = new int[k];
for(int i=0;i<p.length;++i) {
p[i] = q.poll();
}
return p;
}
}
class Solution {
public int[] smallestK(int[] arr, int k) {
return Arrays.stream(arr).sorted().limit(k).toArray();
}
}