Python solution with explanation

  • 0
    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    # = 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 =
                if l2:
                    val += l2.val
                    l2 =
       = ListNode(val % 10)
                val /= 10
                p =

    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.