题意简单,就是将链表对应位置相加,只需要遍历两个链表,然后对应相加,再看看没加完的数据,复制到新链表中就行了。
/**
* 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 *l = new ListNode(0);
ListNode *r = l;
auto temp = 0;
while(l1 != nullptr and l2 != nullptr)
{
auto value = (l1->val + l2->val + temp) % 10;
temp = (l1->val + l2->val + temp) / 10;
ListNode *s = new ListNode(value);
r->next = s;
r = r->next;
l1 = l1->next;
l2 = l2->next;
}
while(l1 != nullptr)
{
auto value = (l1->val + temp) % 10;
temp = (l1->val + temp) / 10;
ListNode *s = new ListNode(value);
r->next = s;
r = r->next;
l1 = l1->next;
}
while(l2 != nullptr)
{
auto value = (l2->val + temp) % 10;
temp = (l2->val + temp) / 10;
ListNode *s = new ListNode(value);
r->next = s;
r = r->next;
l2 = l2->next;
}
if(temp != 0)
{
ListNode *s = new ListNode(1);
r->next = s;
r = r->next;
}
r->next = NULL;
return l->next;
}
};