栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

215. 数组中的第K个最大元素

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

215. 数组中的第K个最大元素

215. 数组中的第K个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

方法1:直接排序法

class Solution:
    def findKthLargest(self, nums, k):
        nums1=sorted(nums,reverse=True)
        return nums1[k-1]           

方法2:堆排序法

class Solution:
    def findKthLargest(self, nums, k):
        temp=list()
        n=len(nums)
        for num in nums:
            heapq.heappush(temp,num)
        for i in range(n-k+1):
            ans=heapq.heappop(temp)
        return ans

堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆。( heapq库中的堆默认是最小堆)

  1. 最大堆,树中各个父节点的值总是大于或等于任何一个子节点的值。
  2. 最小堆,树中各个父节点的值总是小于或等于任何一个子节点的值。

python的heapq模块提供了对(最小)堆的建立和使用。
heapq堆数据结构最重要的特征是heap[0]永远是最小的元素。

heapq堆的常用方法:

1、heapq.heappush(heap, item)
heap为定义堆,item增加的元素。

import heapq
h = []
heapq.heappush(h,2)
h
[2]

2、heapq.heapify(list)
将列表转换为堆。

list = [1,2,3,5,1,5,8,9,6]
heapq.heapify(list)
list
[1, 1, 3, 5, 2, 5, 8, 9, 6]

3、heapq.heappop(heap)
删除并返回最小值,因为堆的特征是heap[0]永远是最小的元素,所以一般都是删除第一个元素。

list=[1, 1, 3, 5, 2, 5, 8, 9, 6]
heapq.heappop(list)
1
list
[1, 2, 3, 5, 6, 5, 8, 9]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号