题目
题解
- 无进位,值等于l1,l2节点和;有进位,下一位需进一
- 创建新链表,需ListNode* l=new ListNode(-1);
- 关于进位,一种可直接加在l1,l2节点上;一种用int A存储即可
代码
/**
* 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(-1);
ListNode* head=l;
ListNode* q;
while(l1!=nullptr&&l2!=nullptr){
int sum=l1->val+l2->val;
if(sum<10)
head->next=new ListNode(sum);
else{
head->next=new ListNode(sum%10);
if(l1->next!=nullptr&&l2->next!=nullptr)
l1->next->val++;
else if(l1->next==nullptr){
q=new ListNode(1);
l1->next=q;
}
else{
q=new ListNode(1);
l2->next=q;
}
}
//head->next=p;
head=head->next;
l1=l1->next;
l2=l2->next;
}
head->next = l1 == nullptr ? l2 : l1;
return l->next;
}
};