最小的K个数
最小的K个数
http://www.nowcoder.com/questionTerminal/6a296eb82cf844ca8539b57c23e6e9bf
import java.util.*;
public class Solution {
public ArrayList<integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<integer> list=new ArrayList<integer>();
if(input==null||input.length==0||input.length<k||k==0) return list;
//Java中默认是小顶堆,添加参数使其变为大顶推
Queue<integer> heap = new PriorityQueue<>(k, (i1, i2) -> Integer.compare(i2, i1));
for(int num:input){
//当前数字小于堆顶元素才会入堆
if(heap.isEmpty()||heap.size()<k||num<heap.peek()){
heap.offer(num);
}
//删除堆顶最大元素
if(heap.size()>k){
heap.poll();
}
}
//将堆中元素存入集合
for(int e:heap){
list.add(e);
}
return list;
}
}</integer></integer></integer></integer>