题解 | #最小的K个数#
最小的K个数
https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf
import java.util.ArrayList; import java.util.PriorityQueue; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { if (input == null || k > input.length || k <= 0) { return new ArrayList<>(); } PriorityQueue<Integer> priorityQueue = new PriorityQueue<> ((o1, o2) -> o2 - o1); for (int num : input) { priorityQueue.add(num); if (priorityQueue.size() > k) { priorityQueue.poll(); } } return new ArrayList<>(priorityQueue); } }
解题思想:大顶堆,到达k+1个数的时候直接弹出顶元素,直到最后剩余的就是k的所需要的值。
#算法##算法笔记#