合并两个排序的单链表(python)
具体过程:
- step 1:判断空链表的情况,只要有一个链表为空,那答案必定就是另一个链表了,就算另一个链表也为空。
- step 2:新建一个空的表头后面连接两个链表排序后的节点,两个指针分别指向两链表头。
- step 3:遍历两个链表都不为空的情况,取较小值添加在新的链表后面,每次只把被添加的链表的指针后移。
- step 4:遍历到最后肯定有一个链表还有剩余的节点,它们的值将大于前面所有的,直接连在新的链表后面即可。
def Merge(self , pHead1: ListNode, pHead2: ListNode) -> ListNode:
# write code here
#一个已经为空了,直接返回另一个
if pHead1 == None:
return pHead2
if pHead2 == None:
return pHead1
#加一个表头
head = ListNode(0)
cur = head
#两个链表都要不为空
while pHead1 and pHead2:
#取较小值的节点
if pHead1.val <= pHead2.val:
cur.next = pHead1
#只移动取值的指针
pHead1 = pHead1.next
else:
cur.next = pHead2
#只移动取值的指针
pHead2 = pHead2.next
#指针后移
cur = cur.next
#哪个链表还有剩,直接连在后面
if pHead1:
cur.next = pHead1
else:
cur.next = pHead2
#返回值去掉表头
return head.next
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!