设计一个算法,找出数组中最小的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))
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/smallest-k-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路及方法
用了优先队列,去巧了。
记录:
class Solution {
public int[] smallestK(int[] arr, int k) {
PriorityQueue<Integer> count = new PriorityQueue<>();
// 入队
for (int i : arr) {
count.offer(i);
}
int[] res = new int[k];
for (int i = 0; i < k; i++) {
res[i] = count.poll();
}
return res;
}
}
结果如下:
网友评论