public class LeastK {
public static Integer[] getLeastNumbers(int[] nums, int k) {
// 默认自然排序,需手动转为降序
PriorityQueue<Integer> maxQueue = new PriorityQueue<>(k, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 > o2) {
return -1;
} else if (o1 < o2) {
return 1;
}
return 0;
}
});
for (int num : nums) {
if (maxQueue.size() < k || num < maxQueue.peek()) { // peek():返回队列头部的值,也就是队列最大值
// 插入元素
maxQueue.offer(num);
}
if (maxQueue.size() > k) {
// 删除队列头部
maxQueue.poll();
}
}
return maxQueue.toArray(new Integer[0]);
}
}
最小的k个数
最新推荐文章于 2024-09-10 10:21:38 发布