LeetCode题解(python)
21. 合并两个有序链表
题目描述
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解题心得
两种方法:
方法一:从链表头部开始依次比较,利用第三个链表进行存储
方法二:递归法,但是python实现的时候出错了……
解题代码
# 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 l1 == None:
return l2
if l2 == None:
return l1
if l1.val<l2.val:
re = ListNode(l1.val)
l1 = l1.next
else:
re = ListNode(l2.val)
l2 = l2.next
rel = re
while l1!= None and l2!= None:
if l1.val < l2.val:
rel.next = l1
rel = rel.next
l1 = l1.next
else:
rel.next = l2
rel = rel.next
l2 = l2.next
if l1== None:
rel.next = l2
if l2 == None:
rel.next = l1
rel = re
return rel
注:其中,定义空节点的时候,可以用
re = ListNode(None)
来代替,不需要向上面一样麻烦了。