2. Add Two Numbers - cocoder39/coco39_LC GitHub Wiki

2. Add Two Numbers

dummy head + two pointers

do not hesitate to allocate new memory for the result linkedlist

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode dummy(0);
        ListNode* p = &dummy;
        
        int carry = 0;
        while (l1 || l2 || carry) {
            int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + carry;
            p->next = new ListNode(sum % 10);
            carry = sum / 10;
            p = p->next;
            l1 ? l1 = l1->next : l1 = nullptr;
            l2 ? l2 = l2->next : l2 = nullptr;
        }
        return dummy.next;
    }