Offer40

    技术2022-08-01  101

    class Solution { public int[] getLeastNumbers(int[] arr, int k) { //java中的堆是优先队列 if(k == 0 || arr.length == 0){ return new int[0]; } //求前k个最小值,用大根堆 Queue<Integer> pq = new PriorityQueue<>((v1,v2) -> v2 - v1); //数组的数加入堆 for(int num : arr){ if(pq.size()<k){ pq.offer(num); } else if(num < pq.peek()){ pq.poll(); pq.offer(num); } } int[] ans = new int[pq.size()]; int idx = 0; for(int num : pq){ ans[idx] = num; idx++; } return ans; } }

     

    Processed: 0.009, SQL: 9