leetcode刷題-劍指offer-40題
阿新 • • 發佈:2022-01-24
最小的k個數
題目[1]
最小的k個數
難度簡單351收藏分享切換為英文接收動態反饋
輸入整數陣列 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]
解答
新手上路,才學疏淺,望斧正
public class Solution17_1 { public int[] getLeastNumbers(int[] arr, int k) { if(k==0){ return new int[k]; } PriorityQueue<Integer> queue=new PriorityQueue<>(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2-o1; } }); for (int i=0; i<k; i++){ queue.add(arr[i]); } for(int i=k;i<arr.length;i++){ if(queue.peek()>arr[i]){ queue.poll(); queue.add(arr[i]); } } int[] res=new int[k]; for (int i=0;i<k;i++){ res[i]=queue.poll(); } return res; } }