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。因为题目要求的是直接返回的是结构,不需要头结点的。