LeetCode
2. 两数相加
水题,dfs
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* tmp=new ListNode(0);
if(l1->next==NULL&&l2->next==NULL)
{
tmp->val=l1->val+l2->val;
if(tmp->val>9)
{
int jinwei=tmp->val/10;
tmp->val%=10;
ListNode* s=new ListNode(0);
s->next=NULL;
tmp->next=s;
s->val=jinwei;
return tmp;
}
else
{
tmp->next=NULL;
return tmp;
}
}
else if(l1->next==NULL)
{
tmp->val=l1->val+l2->val;
if(tmp->val>9)
{
int jinwei=tmp->val/10;
tmp->val%=10;
l2->next->val+=jinwei;
l1->val=0;
tmp->next=addTwoNumbers(l1, l2->next);
return tmp;
}
else
{
l1->val=0;
tmp->next=addTwoNumbers(l1, l2->next);
return tmp;
}
}
else if(l2->next==NULL)
{
tmp->val=l1->val+l2->val;
if(tmp->val>9)
{
int jinwei=tmp->val/10;
tmp->val%=10;
l2->val=0;
l1->next->val+=jinwei;
tmp->next=addTwoNumbers(l1->next,l2);
return tmp;
}
else
{
l2->val=0;
tmp->next=addTwoNumbers(l1->next,l2);
return tmp;
}
}
else
{
tmp->val=l1->val+l2->val;
if(tmp->val>9)
{
int jinwei=tmp->val/10;
tmp->val%=10;
l2->next->val+=jinwei;
tmp->next=addTwoNumbers(l1->next, l2->next);
return tmp;
}
else
{
tmp->next=addTwoNumbers(l1->next, l2->next);
return tmp;
}
}
}
};