【算法刷题】python刷题--合并链表

23\] 合并 K 个升序链表 ```python from typing import List,Optional class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next # @lc code=start # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next import heapq class Solution: def mergeKLists(self, lists: List[ListNode]) -> ListNode: if not lists: return None pq = [] dummy = ListNode(-1) p = dummy for head in lists: if head: heapq.heappush(pq,(head.val,id(head),head)) while pq: node = heapq.heappop(pq)[2] p.next = node if node.next: heapq.heappush(pq,(node.next.val,id(node.next),node.next)) # p指针不断前进 p = p.next return dummy.next ``` 注意点1 对 head是否为None的判断必须有: for head in lists: if head: heapq.heappush(pq,(head.val,id(head),head 否则过不了测试用了\[None

while pq:

p.next = node

或者 p.next = ListNode(node.val) 无区别

因为p.next 会被覆盖成小顶堆的最小值,知道没值了,指向None

相关推荐
2501_908329852 分钟前
NumPy入门:高性能科学计算的基础
jvm·数据库·python
We་ct6 分钟前
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置:二分查找实战
前端·算法·leetcode·typescript·二分
Sunshine for you6 分钟前
C++中的对象池模式
开发语言·c++·算法
炽烈小老头13 分钟前
【 每天学习一点算法 2026/03/25】在排序数组中查找元素的第一个和最后一个位置
学习·算法
刀法如飞15 分钟前
AI时代,重温10大经典排序算法的思维
算法·排序算法·ai编程
啊我不会诶19 分钟前
求LCA 倍增法
c++·算法·深度优先
CoderIsArt20 分钟前
编译器构建中涉及的算法
数据库·算法
暮冬-  Gentle°20 分钟前
编译器优化屏障使用
开发语言·c++·算法
云淡风轻~窗明几净24 分钟前
关于TSP的海岸线猜想:SeaLine算法的逐层法(不同于逐点法)
数据结构·算法·动态规划·模拟退火算法
刀法如飞25 分钟前
AI时代,重温10大经典排序算法
算法·排序算法·ai编程