解题思路-leetcode第二十一题:合并两个有序链表
题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
本题采用遍历两个链表的元素,并不断比较大小,值小的元素插入新链表的方法。首先建立一个值为0的节点head,并设置指针p指向该节点,然后若l1与l2都不为空时,比较l1与l2头节点元素,值小的元素插入新链表,并且该元素所在链表向后移,然后p指针后移,最后当l1或l2为空时,将不为空的链表插入新链表的后面,最后返回head.next。代码如下:
class Solution:
def mergeTwoLists(self, l1, l2):
head = ListNode(0)
p = head
while l1 and l2:
if l1.val <= l2.val:
p.next = l1
l1 = l1.next
else:
p.next = l2
l2 = l2.next
p = p.next
if l1 is not None:
p.next = l1
else:
p.next = l2
return head.next
提交后,通过。