LeetCode #2. Add Two Numbers



This content originally appeared on DEV Community and was authored by Giuseppe

Time Complexity: O(n)

Space Complexity: O(1)

Total space (including result list): O(n)

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 

        ListNode dummy = new ListNode();
        ListNode current = dummy;
        int carry = 0;

        // Continue looping as long as there’s at least one more digit to process or a carry to handle.
        while (l1 != null || l2 != null || carry != 0) {
            // extract the values (if node exists, else 0)
            int val1 = (l1 != null) ? l1.val : 0;
            int val2 = (l2 != null) ? l2.val : 0;

            // compute total sum with carry
            int sum = val1 + val2 + carry;

            // determine next carry and current digit
            carry = sum / 10;
            int digit = sum % 10;

            // create new node with the digit and attach
            current.next = new ListNode(digit);
            current = current.next;

            // move input pointers forward
            if (l1 != null) l1 = l1.next;
            if (l2 != null) l2 = l2.next;

        }  

        return dummy.next;   
    }
}


This content originally appeared on DEV Community and was authored by Giuseppe