力扣热题100_堆_215_数组中的第K个最大元素

文章目录


题目链接

215. 数组中的第K个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

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

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入: 3,2,1,5,6,4, k = 2

输出: 5

示例 2:

输入: 3,2,3,1,2,4,5,5,6, k = 4

输出: 4

解题思路

思路:堆(优先队列)

  • 遍历数组元素,对于挡圈元素 num:
    • 如果优先队列中的元素个数小于 k 个,则将当前元素 num 放入优先队列中。
    • 如果优先队列中的元素个数大于等于 k 个,并且当前元素 num 大于优先队列的队头元素,则弹出队头元素,并将当前元素 num 插入到优先队列中。
  • 遍历完,此时优先队列的队头元素就是第 k 个最大元素,将其弹出并返回即可。

这里我们借助了 Python 中的 heapq 模块实现优先队列算法,这一步也可以通过手写堆的方式实现优先队列。

解题代码

python 复制代码
import heapq
class Solution:
    def findKthLargest(self, nums: List[int], k: int) -> int:
        res = []
        for num in nums:
            if len(res) < k:
                heapq.heappush(res, num)
            elif num > res[0]:
                heapq.heappop(res)
                heapq.heappush(res, num)
        return heapq.heappop(res)

参考资料:datawhalechina

相关推荐
国科安芯6 小时前
星上计算的第一道防线:低轨遥感卫星载荷处理链中的AS32S601型抗辐射MCU—— 面向高分辨率成像与在轨智能处理的场景化综述
大数据·网络·人工智能·单片机·算法·低轨卫星·抗辐射
thusloop7 小时前
零门槛接入 GPT-6-astra 与 claude-opus-5-5,三大场景实战指南
python·gpt·算法·agent·claude·codex
瓦瓦gogo7 小时前
学回溯算法时,我先弄明白了怎么“退回来”
算法
Lzg_na7 小时前
堆和堆排序
算法
TK泰妞7 小时前
TikTok 带货视频如何做多语言本地化?从翻译脚本到重做场景的实用方法
算法·音视频
房开民7 小时前
DDPM 完整原理 + 全套公式串联
算法
lunar_coder7 小时前
哈希扩展 -- 位图思想
c++·算法·哈希算法
秋天的怀念_David8 小时前
听故事学语言 · 数据结构篇 · 序章一 算法之问
数据结构·程序人生·算法
LG.YDX8 小时前
基于中心的3D目标检测和探索追踪-笔记
笔记·算法·目标检测
民乐团扒谱机8 小时前
【读论文】音色在微分音程记忆中的作用
人工智能·深度学习·算法