LeetCode第21题Merge Two Sorted Lists

LeetCode第21题Merge Two Sorted Lists

 下面是实现的代码

class Solution:
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        re=ListNode(0)
        p = re
        while l1!=None and l2!=None:
            if l1.val<l2.val:
                p.next=l1
                p = l1
                l1=l1.next
            else:
                p.next = l2
                p = l2
                l2 = l2.next
        if l2==None and l1!=None:
            p.next=l1
        if l1==None and l2!=None:
            p.next = l2
        return re.next

下面是问题的讲解:

1、要清楚l1和l2是两个LisiNode,这是两个链表的头结点。

2、定义一个节点re用于存储结果的头结点,定义一个p指针(在Python中没有指针,在这里就相当于是c语言中的指针)。

3、一个循环,用于遍历l1和l2两个链表。但是不知道谁的元素少,所以就将while的判断条件定为

l1!=None and l2!=None。这样就不会出现越界的情况。

4、在while里面用if判断l1和l2中元素的大小,按着从小到大的顺序将他们的节点插入到re中(re这个头结点不能动,利用p来遍历往后移动)。不要忘了修改p和l1和l2的值,不断往后移动。

5、当一个链表结束了,而另一个链表没有结束的话,就将没有结束的列表链接早re的后面。

6、最后返回的是re.next。因为题目要求的是直接返回的是结构,不需要头结点的。

 
原文地址:https://www.cnblogs.com/andingding-blog/p/8654452.html