1.分析
- 方法1:先
排序,再循环取K个数
- 方法2:用
最小堆来存数据,取K个堆顶的元素,因为最小堆的堆顶元素永远是最小的
2.代码
import java.util.*;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> res = new ArrayList<>();
if (k == 0)return res;
Arrays.sort(input);
for (int i = 0; i < k; i++) {
res.add(input[i]);
}
return res;
}
}
import java.util.*;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> result = new ArrayList<Integer>();
if(input==null||input.length<k||k<0){
return result;
}
PriorityQueue<Integer> minHeap = new PriorityQueue<Integer>();
for(int i=0;i<input.length;i++){
minHeap.add(input[i]);
}
for(int i = 0;i<k;i++){
result.add(minHeap.poll());
}
return result;
}
}