注意细节!!
/**
* 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* dummy = new ListNode(-1);
ListNode* pre = dummy;
int flag = 0;
while(l1 || l2){
int l1val = l1 ? l1->val:0;
int l2val = l2 ? l2->val:0;
int temp = l1val +l2val+flag;
flag = temp/10;
if(temp >= 10){
temp=temp%10;
}
pre->next =new ListNode(temp);
pre = pre->next;
//这里注意判断
if(l1) l1 = l1->next;
if(l2) l2 = l2->next;
}
//这里注意处理
//用例:
//[9,9,9,9,9,9,9]
//[9,9,9,9]
if(flag >0 ){
pre->next = new ListNode(flag);
}
return dummy->next;
}
};