4-8 Python数据结构常考题之堆
Posted WinvenChang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4-8 Python数据结构常考题之堆相关的知识,希望对你有一定的参考价值。
一、堆
堆的常考题基本围绕在合并多个有序(数组/链表);TopK
问题
1.理解堆的概念,堆是完全二叉树,有最大堆和最小堆
2.全使用python
内置的 heapq
模块实现堆的操作
3.常考题:合并K
个有序链表 leetcode merge-k-sorted-list
# leetcode 第23号题目: 合并K个升序链表
from heapq import heapify, heappop
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def mergKLists(self, lists):
# 读取所有节点值
h = []
for node in lists:
while node:
h.append(node.val)
node = node.next
if not h: # h 为空时,返回 None,不然会报错
return None
# 构造一个最小堆
heapify(h) # 转换成最小堆
# 构造链表
root = ListNode(heappop(h))
cur_node = root
while h:
next_node = ListNode(heappop(h))
cur_node.next = next_node
cur_node = next_node
return root
以上是关于4-8 Python数据结构常考题之堆的主要内容,如果未能解决你的问题,请参考以下文章