开发者社区 问答 正文

找到列表中第k个最大的元素

给定一个列表,找到列表中第k个最大的元素。

输入:list = [3,5,2,4,6,8],k = 3

输出:5

def findKthLargest(nums, k):

pass

print(findKthLargest([3, 5, 2, 4, 6, 8], 3))

5

展开
收起
游客6qcs5bpxssri2 2019-09-15 22:21:58 769 分享 版权
1 条回答
写回答
取消 提交回答
  • 推荐回答

    我找到了两种方法来解决这个问题。首先,我们将对数组进行排序。所以我们所要做的就是返回k-last索引。

    def findKthLargest1(nums, k):

    nums.sort()
    
    return nums[-k]
    

    但是有一种更有趣的方法可以解决这个问题,我们可以使用Heaps。一般来说,当你听到“最小”或“最大”时。你应该想:我需要堆。

    import heapq

    def findKthLargest2(nums, k):

    minHeap = []
    
    heapq.heapify(minHeap)
    
    for x in nums:
    
        heapq.heappush(minHeap, x)
    
        if len(minHeap) > k:
    
            heapq.heappop(minHeap)
    
    return heapq.heappop(minHeap);
    
    2019-09-15 22:22:35
    赞同 展开评论
问答地址: