Python solution with explanation


  • 0
    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def addTwoNumbers(self, l1, l2):
            """
            :type l1: ListNode
            :type l2: ListNode
            :rtype: ListNode
            """
            p = ListNode(-1)
            dummy = p
            val = 0
            while l1 or l2 or val:
                if l1:
                    val += l1.val
                    l1 = l1.next
                if l2:
                    val += l2.val
                    l2 = l2.next
                p.next = ListNode(val % 10)
                val /= 10
                p = p.next
            return dummy.next
    

    First we make a dummy head and will append result next to it. There are three conditions that we need to keep processing the linkedlist:

    1. L1 has remained node
    2. L2 has remained node
    3. We have carry-out from previous computation

    At each step, we make a new node with value of L1+ L2 (val % 10, then update val = val/10) and append the new node to the result list.


Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.