Java写题解 | #最小的K个数#

最小的K个数

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

维护一个长度为k的最大堆,
首先填充优先队列到长度为k,此后每添加进一个元素就弹出一个元素,弹出的为队列中的最大元素,因此留下的即为最小的k个元素。

import java.util.*;


public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
        for (int i = 0; i < k; i++) {
            pq.offer(input[i]);
        }
        for (int i = k; i < input.length; i++) {
            pq.offer(input[i]);
            pq.poll();
        }
        ArrayList<Integer> ans = new ArrayList<Integer>(pq);
        return ans;
    }
}
全部评论

相关推荐

05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
矫健的闭门羹烹饪师又...:本人双非本,在鹅厂测开实习,你这个简历上写的这两个项目的技术栈都差不多,能够让面试官去延伸去问的八股除了redis就再没啥了,建议项目这边可以再改改,然后专业技能那块的话,感觉linux和测试工具可以分开写,毕竟不是干一件事的,反正没实习的基础上面试就深挖项目和八股,好好卷吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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