задача с leetcode -
https://leetcode.com/problems/merge-two-sorted-lis...
Вам даны заголовки двух отсортированных связанных списков list1 и list2.
Объедините два списка в один отсортированный список. Список должен быть составлен путем соединения узлов первых двух списков.
Возвращает заголовок объединенного связанного списка.
Посмотрел решения и везде они +- одинаковые
решение
# 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, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
curr = dummy = ListNode()
while l1 and l2:
if l1.val >l2.val:
curr.next = l2
l2 = l2.next
else:
curr.next = l1
l1 =l1.next
curr = curr.next
if not l1:
curr.next =l2
else:
curr.next = l1
return dummy.next
у меня несколько вопросов
1)
curr = dummy = ListNode()
что это за конструкция. ну вернее я знаю, что это объект класса, но зачем сразу 2 переменные? сделал вот так
dummy = ListNode()
и не работает
2)
if l1.val >l2.val:
curr.next = l2
l2 = l2.next
объясните пожалуйста вот эти 2 строчки
curr.next = l2
l2 = l2.next
3) Почему возвращаем именно dummy и next?
return dummy.next
Буду всем очень благодарен!