2 两树相加
程序员文章站
2022-06-10 22:19:32
...
大数相加转化为位相加的思路
方法一:位相加循环
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int sum = 0;
ListNode* result = new ListNode(0);//保留住链表头
ListNode* temp = result;
while (l1!=NULL||l2!=NULL||sum){
l1 = l1!=NULL ? (sum+=l1->val, l1=l1->next) : l1;
l2 = l2!=NULL ? (sum+=l2->val, l2=l2->next) : l2;
temp->next = new ListNode(sum%10);
temp = temp->next;
sum = sum/10;
}
return result->next;
}
};
方法二:递归
class Solution {
public:
int sum = 0;
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
if(l1==NULL&&l2==NULL&&sum==0)
return NULL;
l1 = l1==NULL ? l1 : (sum+=l1->val,l1=l1->next);
l2 = l2==NULL ? l2 : (sum+=l2->val,l2=l2->next);
ListNode* res = new ListNode(0);
res->val = sum%10;
sum = sum/10;
res->next = addTwoNumbers(l1,l2);
return res;
}
};
上一篇: Axure8高保真原型:Web导航设计制作 Axure
下一篇: 盘点2017最精辟最火的句子