「LeetCode」劍指 Offer 40. 最小的k個數

manor的大數據奮鬥之路 2021-08-15 21:36:52 阅读数:50

本文一共[544]字,预计阅读时长:1分钟~
leetcode offer 最小

劍指 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