剑指Offer(Python多种思路实现):合并两个排序的链表

面试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
发布了35 篇原创文章 · 获赞 2 · 访问量 9649

猜你喜欢

转载自blog.csdn.net/weixin_44151089/article/details/104454438
今日推荐