【算法刷题】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

相关推荐
算AI1 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
JavaEdge在掘金1 小时前
ssl.SSLCertVerificationError报错解决方案
python
我不会编程5552 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
老歌老听老掉牙2 小时前
平面旋转与交线投影夹角计算
python·线性代数·平面·sympy
满怀10152 小时前
Python入门(7):模块
python
无名之逆2 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
你觉得2052 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
啊喜拔牙2 小时前
1. hadoop 集群的常用命令
java·大数据·开发语言·python·scala
owde2 小时前
顺序容器 -list双向链表
数据结构·c++·链表·list
hyshhhh3 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉