PyCraft
常用内置与标准库

heapq 堆

小顶堆、Top K、优先队列,LeetCode 常见

heapq 小顶堆

heapq小顶堆,堆顶是最小值。heappushheappop 都是 O(log n)。

加载代码编辑器中…

取前 K 小 / 前 K 大

前 K 小:维护大小为 K 的堆,或 nsmallest(k, arr)
前 K 大:用负值当“大顶堆”,或 nlargest(k, arr)

加载代码编辑器中…

大顶堆:取负

heapq 只有小顶堆,要“最大值在堆顶”就存负值,取出来再取负。

加载代码编辑器中…

按元组排序(多关键字)

堆里放元组时,按第一个元素比大小,所以“优先级”放第一项。

加载代码编辑器中…