最大/最小de K个数/第K个数

Posted Jun10ng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大/最小de K个数/第K个数相关的知识,希望对你有一定的参考价值。

题目

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

思路

堆排序

收获

用优先队列实现最大最小堆
注意下列代码中优先队列的创建声明,需要自定义比较函数

代码

class Solution {
    public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> h = new PriorityQueue<>((n1,n2)->n1-n2);
        for(int i:nums){
            h.add(i);
            if(h.size()>k){
                h.poll();
            }
        }
        return h.poll();
    }
}

以上是关于最大/最小de K个数/第K个数的主要内容,如果未能解决你的问题,请参考以下文章

03K个数或第k个数算法

[剑指 Offer 40]. 最小的 k 个数

[剑指 Offer 40]. 最小的 k 个数

hdu4106 区间k覆盖问题(连续m个数,最多选k个数) 最小费用最大流 建图巧妙

剑指 Offer 40. 最小的k个数

POJ 2516 Minimum Cost (最小费用最大流)