剑指offer:合并两个排序的链表

一、问题分析

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。如输入{1,3,5},{2,4,6},输出{1,2,3,4,5,6}

首先比较两个链表的头节点,如果表1的头节点更小,那么就固定表1的头节点,接下来关注表1的next部分;

表1的next部分的头节点继续和表2的头节点进行比较(出现了递归),如果表1的next部分的头节点更小,则固定它,接下来关注其余next部分;

二、代码实现:

class Solution:
    # 返回合并后列表
    def Merge(self, pHead1, pHead2):
        # write code here
        if pHead1 is None:
            return pHead2
        if pHead2 is None:
            return pHead1
        if pHead1.val < pHead2.val:
            pHead1.next = self.Merge(pHead1.next,pHead2)
            return pHead1
        else:
            pHead2.next = self.Merge(pHead1,pHead2.next)
            return pHead2
原文地址:https://www.cnblogs.com/liuxiangyan/p/14373593.html