leecode算法《215. 数组中的第K个最大元素》详解有注释,简单明了。

本文详细解析了LeetCode上的215题“数组中的第K个最大元素”,通过使用优先队列和堆数据结构,提供了一种高效解决topK问题的方法。示例包括了如何在未排序的数组中找到第k个最大的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

leecode算法《215. 数组中的第K个最大元素》详解有注释,简单明了。

原题内容

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

示例 1:

输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
示例 2:

输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4
说明:

你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

审题:

这个题典型的topK问题

topK问题就得用优先队列

如果不知道什么优势优先队列先去自己查询一下。

也用到了堆

在这直接用java的类库,等以后有时间了在补充上 构建堆的代码
代码:

 public int findKthLargest(int[] nums, int k) {
        // init heap 'the smallest element first'
        PriorityQueue<Integer> heap =
            new PriorityQueue<Integer>((n1, n2) -> n1 - n2);

        // keep k largest elements in the heap
        for (int n: nums) {
          heap.add(n);
          if (heap.size() > k)
            heap.poll();
        }

        // output
        return heap.poll();        
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值