在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素
最简单直接的方法是,将数组复制到另一个list,对list排序,则,第K个最大的元素,就可以按照数组索引得到它
class Solution:
def findKthLargest(self, nums: List[int], k: int) -> int:
return sorted(nums, reverse=True)[k-1]
除了使用更加有效率的排序方法,题解评论区还存在使用堆的神方法,代码如下
import heapq
class Solution:
def findKthLargest(self, nums: [int], k: int) -> int:
heap = []
for num in nums[:k]:
heapq.heappush(heap, num)
for num in nums[k:]:
if num > heap[0]:
heapq.heappop(heap)
heapq.heappush(heap, num)
return heap[0]