1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { if(!l1) return l2; if(!l2) return l1; int c = 0; ListNode* ret = l1; ListNode* pre = nullptr; while(l1 && l2) { l1->val += l2->val + c; c = l1->val / 10; l1->val %= 10; pre = l1; l1 = l1->next; l2 = l2->next; } if(l2) { pre->next = l2; l1 = l2; } while(c) { if(l1) { l1->val += c; c = l1->val / 10; l1->val %= 10; pre = l1; l1 = l1->next; }else { pre->next = new ListNode(c); break; } } return ret; } };
|