LeetCode 腾讯50题Python实现之《数组中第K个最大元素》

题目描述

在未排序的数组中找到第 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]

你可能感兴趣的:(python)