https://leetcode.com/problems/add-two-numbers/

Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.

리스트의 숫자들을 연속된 수로 보고 그 합을 리스트로 출력하면 된다.

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* dummy = new ListNode(0);
        ListNode* ans = dummy;
        int sum = 0, carry = 0, num = 0;
        int l1Val, l2Val;
        while(l1 || l2 || carry == 1)
        {
            if(l1 != NULL)
            {
                l1Val = l1->val;
                l1 = l1->next;
            }
            else l1Val = 0;
            
            if(l2 != NULL)
            {
                l2Val = l2->val;
                l2 = l2->next;
            }
            else l2Val = 0;
            
            sum = l1Val + l2Val + carry;
            carry = sum / 10;
            num = sum % 10;
            dummy->next = new ListNode(num);
            dummy = dummy->next;
            
        }
        return ans->next;
    }
};

Runtime: 28 ms, faster than 77.70% of C++ online submissions for Add Two Numbers.

Memory Usage: 71.2 MB, less than 45.61% of C++ online submissions for Add Two Numbers.

Runtime: 40 ms, faster than 35.46% of C++ online submissions for Add Two Numbers.

Memory Usage: 71.2 MB, less than 67.58% of C++ online submissions for Add Two Numbers.