/**
* 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 *ans = nullptr;
//ans = new ListNode(0);
//ans->val = 0;
ListNode *returnValue = ans;
int carryFlag = 0;
while (l1 != NULL || l2 != NULL)
{
int n1 = l1? l1->val : 0;
int n2 = l2? l2->val : 0;
int nowVal = n1 + n2 + carryFlag;
if (carryFlag == 1) carryFlag = 0;
if (nowVal >= 10)
{
nowVal = nowVal % 10;
carryFlag = 1;
}
if (!returnValue)
{
returnValue = ans = new ListNode(nowVal);
}
else
{
ans->next = new ListNode(nowVal);
ans = ans->next;
}
if (l1) l1 = l1->next;
if (l2) l2 = l2->next;
}
if (carryFlag == 1)
{
ans->next = new ListNode(1);
ans = ans->next;
}
return returnValue;
}
};
菜是真的菜TvT