题解 | #最小的K个数#

最小的K个数

https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf

import java.util.*;

public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList<Integer> list = new ArrayList<>();
        if(input.length < k || k < 1 || input.length <0) return list;


        //创建一个大根堆 堆顶为堆中的最大元素 ,
        //每次取出堆顶元素 就相当于取出堆中的最大元素
        //注意 堆中元素是无序存储的 
        Queue<Integer> queue = new PriorityQueue<>(k,Collections.reverseOrder()); 

        for(int i = 0 ; i < input.length ; i++){
                if(queue.size() < k){
                    queue.add(input[i]);
                }else{
                    if(input[i] < queue.peek()){
                        //如果 当前元素小于 堆中最大元素 
                        //将堆中最大元素弹出 将当前元素加入堆中
                        queue.poll();
                        queue.add(input[i]);
                    }
                }
        }
        while(!queue.isEmpty()){
            list.add(queue.poll());
        }



        return list;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:32
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
07-09 15:55
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务