题解 | #最小的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的所需要的值。
#算法##算法笔记#
360集团公司福利 405人发布
