这道题目直接求解就行,最后记得进位。难点为题目两个数由链表存储,相较于数组操作更加复杂一点。
/**
* 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;
ListNode* p=&res;
int flag=0;
while(l1!=NULL&&l2!=NULL)
{
flag=flag+l1->val+l2->val;
p=p->next=new ListNode(flag%10);
flag/=10;
l1=l1->next;
l2=l2->next;
}
while(l1!=NULL){
flag=flag+l1->val;
p=p->next=new ListNode(flag%10);
flag/=10;
l1=l1->next;
}
while(l2!=NULL){
flag=flag+l2->val;
p=p->next=new ListNode(flag%10);
flag/=10;
l2=l2->next;
}
if(flag)
p=p->next=new ListNode(flag%10);
return res.next;
}
};