美文网首页
剑指 Offer 第40题:最小的k个数

剑指 Offer 第40题:最小的k个数

作者: 放开那个BUG | 来源:发表于2022-07-31 13:01 被阅读0次

    1、前言

    题目描述

    2、思路

    使用大根堆的思路,主要大根堆的这段代码,节省时间:new PriorityQueue<>((o1, o2) -> o2 - o1);

    3、代码

    class Solution {
        public int[] getLeastNumbers(int[] arr, int k) {
            if(k == 0 || arr.length == 0){
                return new int[]{};
            }
            PriorityQueue<Integer> minHeap = new PriorityQueue<>((o1, o2) -> o2 - o1);
            for(int i = 0; i < k; i++){
                minHeap.offer(arr[i]);
            }
    
            for(int i = k; i < arr.length; i++){
                if(arr[i] < minHeap.peek()){
                    minHeap.poll();
                    minHeap.offer(arr[i]);
                }
            }
    
            int[] res = new int[k];
            for(int i = 0; i < k; i++){
                res[i] = minHeap.poll();
            }
            
            return res;
        }
    }
    

    相关文章

      网友评论

          本文标题:剑指 Offer 第40题:最小的k个数

          本文链接:https://www.haomeiwen.com/subject/xtobbrtx.html