题目:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
代码:
# 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
#将输入的两个链表分别写入两个列表中
value1=l1.val
value_list1=[]
while 1:
value_list1.append(value1)
if l1.next==None:
break
l1=l1.next
value1=l1.val
value2=l2.val
value_list2=[]
while 1:
value_list2.append(value2)
if l2.next==None:
break
l2=l2.next
value2=l2.val
#合并两个列表中的元素,并对列表中的元素进行从小到大的排序
all_value_list=value_list1+value_list2
all_value_list.sort()
#将经过排序的列表元素再次写入链表中
l3=ListNode(all_value_list[0])
p1=l3
for i in range(1,len(all_value_list)):
p1.next=ListNode(all_value_list[i])
p1=p1.next
return l3