题目描述:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
你必须设计并实现时间复杂度为 O(n) 的算法解决此问题
题解:题目里有第k个的或前k个的词语出现,都和堆脱不了关系,这里由于python不能直接实现最大堆,所以只能建立空数组,对数字取反遍历加入来进行最大堆化。第k个就用关于k的while循环实现就行
class Solution:
def findKthLargest(self, nums: List[int], k: int) -> int:
heap = []
heapq.heapify(heap)
for num in nums:
num = -1*num
heapq.heappush(heap,num)
while k>1:
heapq.heappop(heap)
k -=1
return heapq.heappop(heap)*-1