注意:最小TopK用大顶堆,最大TopK用小顶堆
一、用java 的priorityQueue实现
//最小Top, 用java的PriorityQueue
import java.util.*;
public class Solution{
public ArrayList<Integer<> getLeastNumber_Solution(int[] input, int k){
int n = input.length;
ArrayList<Integer> list = new ArrayList<>();
if(n == 0 || k > n || k == 0) return list;
//大顶堆 降序
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(k, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2){
return o2.compareTo(o1);
}
});
//PriorityQueue<Integer> maxHeap = new PriorityQueue<>(k, (o1, o2) -> o2 - o1);
for(int i = 0; i < n; i++){
if(maxHeap.size() < k){
maxHeap.offer(input[i]);
}else if(maxHeap.peek