思路:
很典型的链表题目,就是对链表进行相加即可。
代码:
/**
* 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* head = new ListNode(0,NULL);
ListNode*t = head;
int num = 0;
while(l1!=NULL || l2!=NULL){ //学学这种写法,比写三个while好得多
int x = (l1==NULL ? 0 : l1->val );
int y = (l2==NULL ? 0 : l2->val );
num = x + y + num;
//cout<<num<<endl;
t->next = new ListNode(num%10,NULL);
num/=10;
t = t->next;
if(l1!=NULL)
l1=l1->next;
if(l2!=NULL)
l2=l2->next;
}
if(num){
t->next = new ListNode(num,NULL);
}
return head->next;
}
};