NC119 最小的K个数
描述
给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。
0 <= k <= input.length <= 10000
0 <= input[i] <= 10000
输入:
[4,5,1,6,2,7,3,8],4
复制
返回值:
[1,2,3,4]
复制
说明:
返回最小的4个数即可,返回[1,3,2,4]也可以
import java.util.ArrayList;
import java.util.*;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> res = new ArrayList<>();
if(input == null || k == 0){
return res ;
}
PriorityQueue<Integer> maxheap = new PriorityQueue<Integer>(k ,new Comparator<Integer>(){
public int compare(Integer o1 , Integer o2){
return o2 - o1 ;
}
} );
for(int num : input){
maxheap.offer(num);
if(maxheap.size() > k){
maxheap.poll();
}
}
Iterator it = maxheap.iterator();
while(it.hasNext()){
res.add((Integer) it.next());
}
return res;
}
}