老卫带你学---leetcode刷题(215. 数组中的第K个最大元素)

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

问题:

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

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

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

bash 复制代码
示例 1:

输入: [3,2,1,5,6,4], k = 2
输出: 5
bash 复制代码
示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4
bash 复制代码
提示:

1 <= k <= nums.length <= 105
-104 <= nums[i] <= 104

解决:

堆排序

对每个元素入堆,然后pop出来k-1个

这里需要注意,默认堆为最小堆,所以在入堆的时候入num的负数,就会trick为最大堆

python 复制代码
import heapq
class Solution:
    def findKthLargest(self, nums: List[int], k: int) -> int:
        l = []
        for num in nums:
            heapq.heappush(l,-num)
            print(l)
        for _ in range(k-1):
            heapq.heappop(l)
        return -l[0]
相关推荐
逆境不可逃23 分钟前
LeetCode 热题 100 之 41.缺失的第一个正数
算法·leetcode·职场和发展
We་ct2 小时前
LeetCode 173. 二叉搜索树迭代器:BSTIterator类 实现与解析
前端·算法·leetcode·typescript
踩坑记录2 小时前
leetcode hot100 79. 单词搜索 medium 递归回溯
leetcode
Rhystt4 小时前
代码随想录第二十六天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
数据结构·c++·算法·leetcode
TracyCoder1235 小时前
LeetCode Hot100(57/100)——5. 最长回文子串
算法·leetcode·职场和发展
WZ188104638695 小时前
LeetCode第20题
算法·leetcode
吕司5 小时前
LeetCode Hot Code——三数之和
数据结构·算法·leetcode
YGGP6 小时前
【Golang】LeetCode 54. 螺旋矩阵
算法·leetcode·矩阵
TracyCoder1236 小时前
LeetCode Hot100(58/100)——138. 随机链表的复制
leetcode·链表
Frostnova丶6 小时前
LeetCode 868. 二进制间距
算法·leetcode