LeetCode--面试题40. 最小的k个数
程序员文章站
2024-03-15 09:00:11
...
——————————————————————————————————————————————
方法1:排序之后取前 k 个
class Solution {
public int[] getLeastNumbers(int[] arr, int k) {
if(k == 0 || arr.length == 0) return new int[0];
Arrays.sort(arr);
int[] res = new int[k];
for(int i = 0;i < k;i++) res[i] = arr[i];
return res;
}
}
方法2:堆排序
import java.util.PriorityQueue;
class Solution {
public int[] getLeastNumbers(int[] arr, int k) {
if(k == 0 || arr.length == 0) return new int[0];
PriorityQueue<Integer> q = new PriorityQueue<Integer>(k);
for(int i = 0;i < arr.length;i++) {
q.add(arr[i]);
}
int[] res = new int[k];
for(int i = 0;i < k;i++) res[i] = q.poll();
return res;
}
}