题目:
思路:
有两种方法:
(1)创建一个新的链表,这个链表由原来的两个链表的结点组成,也就是分别将之前的两个链表的结点逐一(按照大小)添加到新的链表中。
(2)以其中一个链表为基准,将另外一个链表的结点移动到这个链表中。
代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
newList = ListNode(0)
p = newList
while list1 and list2:
if list1.val<=list2.val:
p.next = list1
list1 = list1.next
else:
p.next = list2
list2 = list2.next
p = p.next
if list1:
p.next = list1
else:
p.next = list2
newList = newList.next
return newList
第二种方法的代码我晚点再发上来,还有一点小错误需要debug一下。。
结果:
关于LeetCode的解题方法欢迎大家一起讨论~