码迷,mamicode.com
首页 > 编程语言 > 详细

python3 -- 堆(heapq)

时间:2020-04-14 17:08:22      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:font   数据结构   删除   实现   lin   结构   div   solution   push   

堆是一个二叉树,其中每个父节点的值都小于或等于其所有子节点的值。整个堆的最小元素总是位于二叉树的根节点。

python的heapq模块提供了对堆的支持。这个模块实现的是小顶堆

堆数据结构最重要的特征是heap[0]永远是最小的元素

1.heapq.heappush(heap,item)

 注:heap为定义堆,item增加的元素

 技术图片

 2.heapq.heapify(list)

将列表转换为堆

技术图片

 3.heapq.heappop(heap)

注:删除最小值,因为堆的特征是heap[0]永远是最小的元素,所以一般都是删除第一个元素。

技术图片

 4.heapq.heapreplace(heap.item)

注:删除最小元素值,添加新的元素值

技术图片

5.heapq.nlargest(n,heap)

注:查询堆中的最大元素,n表示查询元素个数

技术图片

 

 6.heapq.nsmallest(n,heap)

注:查询堆中的最小元素,n表示查询元素的个数

技术图片

 

 

leetcode练习题:

 技术图片

 

class Solution:
    def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
        if k == 0:
            return list()
        hp = [-x for x in arr[:k]]
        heapq.heapify(hp)
        for i in range(k, len(arr)):
            if -hp[0] > arr[i]:
                heapq.heappop(hp)
                heapq.heappush(hp, -arr[i])
        ans = [-x for x in hp]
        return ans

  

 

python3 -- 堆(heapq)

标签:font   数据结构   删除   实现   lin   结构   div   solution   push   

原文地址:https://www.cnblogs.com/GumpYan/p/12698737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!