classSolution:deffindKthLargest(self,nums:List[int],k:int)-int:importheapq sizelen(nums)queue[-nums[i]foriinrange(size)]# 使用大顶堆把所有元素取反 代表优先级heapq.heapify(queue)for_inrange(k-1):heapq.heappop(queue)return-queue[0]优化之后的遍历数组元素对于当前元素num如果优先级队列中的元素个数小于k个则将当前元素num放入优先级队列中。如果优先级队列中的元素个数大于等于k个并且当前元素num大于优先级队列的队头元素则弹出队头元素并将当前元素num插入到优先级队列中。遍历完此时优先级队列的队头元素就是第k个最大元素将其弹出并返回即可。这里我们借助了 Python 中的heapq模块实现优先级队列算法这一步也可以通过手写堆的方式实现优先级队列。importheapqclassSolution:deffindKthLargest(self,nums:List[int],k:int)-int:res[]fornuminnums:iflen(res)k:heapq.heappush(res,num)elifnumres[0]:heapq.heappop(res)heapq.heappush(res,num)returnheapq.heappop(res)