合并两个排序的链表 python

本文介绍两种将两个单调递增链表合并成一个单调不减链表的方法:递归法和循环法。递归法通过比较两个链表头部节点值进行合并;循环法则通过遍历两个链表并按顺序连接节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

第一种方法递归:

class Solution:
	def Merge(self, pHead1, pHead2):
		if pHead1 == None:
			return pHead2
		elif pHead2 ==None:
			return pHead1
		
		pMergeHead = None
		if pHead1.val < pHead2.val:
			pMergeHead = pHead2
			pMergeHead.next = self.Merge(pHead1.next, pHead2)
		else:
			pMergeHead = pHead1
			pMergeHead.next = self.Merge(pHead1, pHead2.next)
		return pMergeHead
		

第二种方法循环:

def Merge(self, pHead1, pHead2):
	if pHead1 == None:
		return pHead2
	elif pHead2 == None:
		return pHead1
	if pHead1.val < pHead2.val:
		pMergeHead = plist = pHead1
		pHead1 = pHead1.next
	else:
		pMergeHead = plist = pHead2
		pHead2 = pHead2.next
	
	while pHead1 and pHead2:
		if pHead1.val < pHead2.val:
			plist.next = pHead1
			plist = plist.next
			pHead1 = pHead1.next
		else:
			plist.next = pHead2
			plist = plist.next
			pHead2 = pHead2.next
	if pHead1 != None:
		plist.next = pHead1
	elif pHead2 != None:
		plist.next = pHead2
	return pMergeHead
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值