Example: Add Two Numbers - rFronteddu/general_wiki GitHub Wiki

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        if (l1 == null) {
            return l2;
        }
        
        if (l2 == null) {
            return l1;
        }
        
        var n = l1;
        var m = l2;
        ListNode newListHead = null;
        ListNode newListNode = null;
        int carry = 0;
        while (n != null || m != null) {
            int nVal = n != null ? n.val : 0;
            int mVal = m != null ? m.val : 0;
                   
            int sum = nVal + mVal + carry;
            int val = sum > 9 ? sum - 10 : sum;
            carry = sum > 9 ? 1 : 0;
            
            if (newListHead == null) {
                newListNode = new ListNode(val);
                newListHead = newListNode;
            } else {
                newListNode.next = new ListNode(val);
                newListNode = newListNode.next;
            }
            
            
            System.out.println(newListNode.val);
            if (n != null) n = n.next;
            
            if (m != null) m = m.next;
        }
        
        if (carry != 0) {
            newListNode.next = new ListNode(carry);
            newListNode = newListNode.next;
        }
            
        
        return newListHead;
    }
}