LeetCode 合并两个有序链表 解法
题目描述:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
参考程序1:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, L1, L2):
"""
:type L1: ListNode
:type L2: ListNode
:rtype: ListNode
"""
Head = ListNode(0)
First = Head
while L1 != None and L2 != None:
if L1.val > L2.val:
Head.next = L2
L2 = L2.next
else :
Head.next = L1
L1 = L1.next
Head = Head.next
if L1 == None:
Head.next = L2
elif L2 == None:
Head.next = L1
return First.next
运行结果1:
参考程序2:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, L1, L2):
Head = ListNode(0)
Other_list = Head
while L1 != None and L2 != None:
if L1.val > L2.val:
Head.next = L2
L2 = L2.next
else:
Head.next = L1
L1 = L1.next
Head = Head.next
if L2 != None:
Head.next = L2
elif L1 != None:
Head.next = L1
return Other_list.next
运行结果2:
参考程序3:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, L1, L2):
if L1 == None and L2 == None:
return None
if L1 == None:
return L2
if L2 == None:
return L1
if L1.val <= L2.val:
L1.next = self.mergeTwoLists(L1.next, L2)
return L1
else:
L2.next = self.mergeTwoLists(L1, L2.next)
return L2
运行结果3: