Solution
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* result = new ListNode();
ListNode* resultPointer = result;
int carry = 0;
while (l1 || l2) {
int sum = carry;
if (l1) {
sum += l1->val;
l1 = l1->next;
}
if (l2) {
sum += l2->val;
l2 = l2->next;
}
carry = sum / 10;
resultPointer->next = new ListNode(sum % 10);
resultPointer = resultPointer->next;
}
if (carry) {
resultPointer->next = new ListNode(carry);
}
return result->next;
}
Complexity
Runtime: O(n + m)
Space: O(1)
Top comments (0)