Untitled
plain_text
2 months ago
2.0 kB
2
Indexable
Never
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* res = new ListNode(); ListNode* temp = res; int overload = 0; while (l1 != nullptr && l2 != nullptr) { temp->val = l1->val + l2->val; if (overload != 0) temp->val += overload; overload = 0; if (temp->val > 9) { overload = temp->val / 10; temp->val = temp->val % 10; } if (l1->next != nullptr && l2->next != nullptr) temp->next = new ListNode(); l1 = l1->next; l2 = l2->next; if (temp->next != nullptr) temp = temp->next; } if (l1 != nullptr || l2 != nullptr) { ListNode* remainder = l1 != nullptr ? l1 : l2; while (remainder != nullptr) { temp->next = new ListNode(); temp = temp->next; temp->val = overload + remainder->val; overload = 0; if (temp->val > 9) { overload = temp->val / 10; temp->val = temp->val % 10; } remainder = remainder->next; } } while (overload != 0) { temp->next = new ListNode(); temp = temp->next; temp->val = overload; overload = 0; if (temp->val > 9) { overload = temp->val / 10; temp->val = temp->val % 10; } } return res; } };