面试25题:
题目:合并两个排序的链表
题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路一:递归,并需注意对空链表单独处理。
class Solution:
# 返回合并后列表
def Merge(self, pHead1, pHead2):
# write code here
if not pHead1:
return pHead2
elif not pHead2:
return pHead1
pMergedHead=None
if (pHead1.val<pHead2.val):
pMergedHead=pHead1
pMergedHead.next=self.Merge(pHead1.next,pHead2)
else:
pMergedHead=pHead2
pMergedHead.next=self.Merge(pHead1,pHead2.next)
return pMergedHead
解题思路二:迭代
def mergeTwoLists(l1, l2):
l = head = ListNode(0)
while l1 and l2:
if l1.val <= l2.val:
l.next, l1 = l1, l1.next
else:
l.next, l2 = l2, l2.next
l = l.next
l.next = l1 or l2
return head.next