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;
    }
}