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 51 52 53 54 55 56 57 58 59 60 61
|
class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { auto pseudoL1 = l1; auto pseudoL2 = l2; int l1Length = 0; int l2Length = 0; while(pseudoL1) { ++l1Length; pseudoL1 = pseudoL1->next; } while(pseudoL2) { ++l2Length; pseudoL2 = pseudoL2->next; } if(l1Length > l2Length) swap(l1, l2); auto ret = l2; auto pre = l2; int c = 0; while(l1) { auto sum = l2->val + l1->val + c; c = sum / 10; l2->val = sum % 10; pre = l2; l1 = l1->next; l2 = l2->next; } while(c) { if(!l2) { pre->next = new ListNode(c); break; } else { auto sum = l2->val + c; l2->val = sum % 10; c = sum / 10; pre = l2; l2 = l2->next; } } return ret; } };
|