求最小的k个数,用大顶堆,实现可以采用Java自带的容器PriorityQueue
import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.Comparator;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> res=new ArrayList<>();
if(input==null || input.length==0 || k==0){
return res;
}
PriorityQueue<Integer> p=new PriorityQueue<>(new Comparator<Integer>(){
public int compare(Integer num1,Integer num2){
return num2-num1;
}
});
for(int i:input){
if(p.size()<k){
p.offer(i);
}else{
if(i<p.peek()){
p.poll();
p.offer(i);
}
}
}
for(int i:p){
res.add(i);
}
return res;
}
}