Leetcode: Add Two Numbers, Python3

1563 / 1563 test cases passed
Status: Accepted
Runtime: 56 ms (beats 99.02% of submissions)
Memory Usage: 12.6 MB (beats 100% of submissions)

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        cur, carry = self.addVals(l1.val, l2.val, 0)
        res = ListNode(cur)
        thisRes = res

        while((l1.next != None) or (l2.next != None)):
            if l1.next != None:
                l1 = l1.next
                val1 = l1.val
            else:
                val1 = 0
            if l2.next != None:
                l2 = l2.next
                val2 = l2.val
            else:
                val2 = 0
            cur, carry = self.addVals(val1, val2, carry)
            thisRes.next = ListNode(cur)
            thisRes = thisRes.next

        if carry > 0:
            thisRes.next = ListNode(carry)

        return res

    def addVals(self, val1, val2, carry):
        cur = val1 + val2 + carry

        if cur > 9:
            carry = 1
            cur -= 10
        else:
            carry = 0

        return cur, carry

More from Joshua
All posts