0002-Add Two Numbers
阿新 • • 發佈:2021-01-12
技術標籤:Daily Leetcode其他
/**
* 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 *result = new ListNode(0);
ListNode *l3 = result;
int agr = 0;
while(nullptr != l1 && nullptr != l2){
l3->next = new ListNode(0);//需要new的時候再new一個
l3 = l3->next;
l3->val = l1->val + l2->val + agr;
agr = 0;
if(l3->val > 9){
l3->val = l3->val % 10;
agr = 1;
}
l1 = l1->next;
l2 = l2->next;
}
while(nullptr != l1 && nullptr == l2){
l3->next = new ListNode(0);
l3 = l3->next;
l3->val = l1->val + agr;
agr = 0;
if(l3->val > 9){
l3->val = l3->val % 10;
agr = 1;
}
l1 = l1->next;
}
while(nullptr == l1 && nullptr != l2){
l3->next = new ListNode(0);
l3 = l3->next;
l3->val = l2->val + agr;
agr = 0;
if(l3->val > 9){
l3->val = l3->val % 10;
agr = 1;
}
l2 = l2->next;
}
if(agr){//最後一位如果進位
l3->next = new ListNode(0);
l3 = l3->next;
l3->val = 1;
}
return result->next;
}
};