题目
- 返回两链表相加和问题
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ac1861ea7b6a8dad3e672d86dfc8a075.png)
我的题解
- 看到题解都是每遍历一次就申请一次内存,内存的代价太高,故在遍历两个链表时采用修改其中一个的值,最后进位时申请一次内存的方式。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int tag=0,t=0;
ListNode* head=new ListNode(0),*pre=head;
while(l1 || l2){
if(l1){
pre->next=l1;
if(l2){
t=l2->val+tag+l1->val;
l1=l1->next;
l2=l2->next;
}
else{
t=l1->val+tag;
l1=l1->next;
}
}
else if(l2){
pre->next=l2;
t=l2->val+tag;
l2=l2->next;
}
pre=pre->next;
tag=t/10;
pre->val=t%10;
}
if(tag){
pre->next=new ListNode(1);
}
return head->next;
}
};
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/461f6ecd28d84ddbb6bf6f03e79891c4.png)