diff --git a/CPP/LinkedList/Add Two Numbers.cpp b/CPP/LinkedList/Add Two Numbers.cpp new file mode 100644 index 00000000..770d3fba --- /dev/null +++ b/CPP/LinkedList/Add Two Numbers.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { + ListNode preHead(0), *p = &preHead; + int extra = 0; + while (l1 || l2 || extra) { + int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + extra; + extra = sum / 10; + p->next = new ListNode(sum % 10); + p = p->next; + l1 = l1 ? l1->next : l1; + l2 = l2 ? l2->next : l2; + } + return preHead.next; +} +};