manor的大數據奮鬥之路 2021-08-15 21:36:52 阅读数:50
劍指 Offer 40. 最小的k個數
輸入整數數組 arr ,找出其中最小的 k
個數。例如,輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。
示例 1:
輸入:arr = [3,2,1], k = 2 輸出:[1,2] 或者 [2,1]
示例 2:
輸入:arr = [0,1,2,1], k = 1 輸出:[0]
class Solution {
public int[] getLeastNumbers(int[] arr, int k) {
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new Comparator<Integer>(){
@Override
public int compare(Integer o1,Integer o2) {
return o2 -o1;
}
});
for(int i :arr){
priorityQueue.offer(i);
if(priorityQueue.size() >k) {
priorityQueue.poll();
}
}
return priorityQueue.stream().mapToInt(i ->i).toArray();
}
}
版权声明:本文为[manor的大數據奮鬥之路]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815213646744O.html