【leetcode hot 100 215】数组中的第K个最大元素

解法一:维护最大最小值 -> 堆 -> k个元素的最小值堆

java 复制代码
class Solution {
    public int findKthLargest(int[] nums, int k) {
        // 维护最大最小值 -> 堆 -> k个元素的最小值堆
        PriorityQueue<Integer> heap = new PriorityQueue<>((n1, n2) -> n1 - n2);

        for (int i = 0; i < nums.length; i++) {
            heap.offer(nums[i]);
            if (heap.size() > k) {
                // 维护k个元素的最小值堆
                heap.poll();
            }
        }

        return heap.peek();
    }
}

注意:

  • 当堆元素个数大于k时,要剔除元素:heap.poll()
相关推荐
zz0723201 小时前
Java 集合体系 —— List 篇
java·list·集合体系
-雷阵雨-1 小时前
数据结构——LinkedList和链表
java·开发语言·数据结构·链表·intellij-idea
fly-phantomWing4 小时前
Maven的安装与配置的详细步骤
java·后端·maven·intellij-idea
2401_841495647 小时前
【数据结构】红黑树的基本操作
java·数据结构·c++·python·算法·红黑树·二叉搜索树
西猫雷婶7 小时前
random.shuffle()函数随机打乱数据
开发语言·pytorch·python·学习·算法·线性回归·numpy
学编程的小鬼8 小时前
SpringBoot 自动装配原理剖析
java·spring boot·后端
小李独爱秋8 小时前
机器学习中的聚类理论与K-means算法详解
人工智能·算法·机器学习·支持向量机·kmeans·聚类
@@神农9 小时前
maven的概述以及在mac安装配置
java·macos·maven
杜子不疼.9 小时前
【C++】玩转模板:进阶之路
java·开发语言·c++
夜晚中的人海9 小时前
【C++】异常介绍
android·java·c++