输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
l1为链表1,l2为链表2
思路:首先定义一个辅助链表来组成结果链表,然后从头开始遍历两个链表,比较两个链表的每个节点,将有序节点插入辅助链表中,当两个链表中某一个遍历完之后跳出迭代,另一链表剩余的节点都大于辅助链表中的节点,所以将辅助链表的next指向剩余链表即可。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l1 and not l2:return None
elif l1 and not l2:return l1
elif not l1 and l2:return l2
head = ListNode()
slow = head
head1 = l1
head2 = l2
while head1 and head2:
if head1.val < head2.val:
slow.next = head1
slow = slow.next
head1 = head1.next
else:
slow.next = head2
slow = slow.next
head2 = head2.next
if head1:
slow.next = head1
if head2:
slow.next = head2
return head.next