mergeTwoLists: как работает память в Python? - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю над проблемой слияния двух списков из кода leet.Эта проблема требует объединения двух связанных списков отсортированным способом.Код решения приведен ниже.В коде переменная prev постоянно обновляется и в итоге имеет только один узел из l1 или l2.Тем не менее, prehead, кажется, запоминает всякий раз, когда выполняется prev.next.Тем не менее, он не запоминает, когда prev = prev.next выполняется.

Например, если вы запустите этот код для l1 = 1->3->4, l2 = 1->2->4.В конце:

prev = ListNode{val: 4, next: ListNode{val: 4, next: None}}. 

prehead = ListNode{val: -1, next: ListNode{val: 1, next: ListNode{val: 1, next: ListNode{val: 2, next: ListNode{val: 3, next: ListNode{val: 4, next: ListNode{val: 4, next: None}}}}}}}
        prehead = ListNode(-1)

        prev = prehead
        while l1 and l2:

            if l1.val <= l2.val:
                prev.next = l1
                l1 = l1.next
            else:
                prev.next = l2
                l2 = l2.next 


            prev = prev.next

        # exactly one of l1 and l2 can be non-null at this point, so connect
        # the non-null list to the end of the merged list.
        prev.next = l1 if l1 is not None else l2

        return prehead.next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...