import java.util.*; public class Solution { //采用了优先队列来构建大顶堆 //https://www.cnblogs.com/yongh/p/9945539.html public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> result = new ArrayList(); if(k<=0||k>input.length) return result; PriorityQueue<Integer> queue = new PriorityQueue<>((num1, num2)->num2-num1); for(int i = 0; i<input.length; i++) { if (i<k) { queue.offer(input[i]); } else { if (queue.peek()>input[i]) { queue.poll(); queue.offer(input[i]); } } } for(int j=0;j<k;j++) { result.add(queue.poll()); } return result; } }