开发者社区> 问答> 正文

找到列表中第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 650 0
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
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载