解法:
/**
* 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) {
if(l1==nullptr) return l2;
if(l2==nullptr) return l1;
ListNode* head=new ListNode();
ListNode* curr=head;
int count=0;
while(l1 != nullptr || l2 != nullptr){
int sum;
if(l1 == nullptr){
sum = l2->val + count;
}else if(l2 == nullptr){
sum = l1->val + count;
}else{
sum = l1->val + l2->val + count;
}
count = sum / 10;
sum = sum % 10;
curr->next = new ListNode(sum);
curr = curr->next;
if(l1 != nullptr) l1 = l1->next;
if(l2 != nullptr) l2 = l2->next;
}
if(count == 1){
curr->next = new ListNode(1);
}
return head->next;
}
};