美文网首页
2020-03-20刷题笔记

2020-03-20刷题笔记

作者: 爱叫啥叫啥去 | 来源:发表于2020-03-20 15:32 被阅读0次

https://www.jianshu.com/p/801318c77ab5


python标准库模块heapq

该模块提供了堆排序算法的实现。堆是二叉树,最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。

创建堆

heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结构

heapq 模块还有一个heapq.merge(*iterables)方法,用于合并多个排序后的序列成一个排序后的序列, 返回排序后的值的迭代器。

类似于sorted(itertools.chain(*iterables)),但返回的是可迭代的。

访问堆内容

堆创建好后,可以通过`heapq.heappop() 函数弹出堆中最小值。

如果需要删除堆中最小元素并加入一个元素,可以使用heapq.heaprepalce() 函数

获取堆最大或最小值

如果需要获取堆中最大或最小的范围值,则可以使用heapq.nlargest() 或heapq.nsmallest() 函数

这两个函数还接受一个key参数,用于dict或其他数据结构类型使用

heapq应用

实现heap堆排序算法

该算法和sorted(iterable)类似,但它是不稳定的

堆的值可以是元组类型,可以实现对带权值的元素进行排序。

相关文章

  • 2020-03-20刷题笔记

    https://www.jianshu.com/p/801318c77ab5 python标准库模块heapq 该...

  • 晨间日记

    计算机刷题 看书写笔记 高数刷题 英语刷题 奋斗到天亮,加油奥利给

  • 谷歌工程师为金三银四筹备1000道Leetcode刷题笔记

    对于刷题相关的文章,在之前我也推荐过不少,今天再给大家推荐一份算法刷题笔记,这份笔记与以往的刷题有所区别,作者把 ...

  • 刷题笔记

    算法思想 一、二分查找 1. 算法思想 算法详解 算法细节 一定要看二分查找细节.md 实现时需要注意以下细节: ...

  • 刷题笔记

    最近在准备面试,发现自己真的菜的不行,就计划接下来的时间把 leetcode 上面刷的 中等题 和 每日一题做个简...

  • 刷题笔记

    题目描述 343 - Integer BreakGiven a positive integer n, break...

  • 2020-03-20 刷题2(堆)

    最小的k个数 采用最大堆(优先队列)的做法,首先将前k个元素入堆,剩下的元素依次与堆顶元素比较,如果更小,就将堆顶...

  • 抓住小尾巴

    最近忙着刷题,感觉效率不是很高,白天看录播视频做笔记,晚上刷题。参加了一个集训营,只要每天刷完固定的题量,达到了七...

  • 字节总监首发1121道LeetCode算法刷题笔记(含答案)

    关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题...

  • 字节总监首发1121道LeetCode算法刷题笔记(含答案)

    关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题...

网友评论

      本文标题:2020-03-20刷题笔记

      本文链接:https://www.haomeiwen.com/subject/lcljyhtx.html