赶脚解法依然暴力,不过好在用时还不算特别多。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *result = new ListNode(0);
ListNode *head = result;
int carry = 0;//记录是否需要进位
while (l1 != NULL || l2 != NULL)
{
if (l1 != NULL && l2 != NULL)
{
result->val = l1->val + l2->val;
l1 = l1->next;
l2 = l2->next;
}
else if (l1 == NULL && l2 != NULL)
{
result->val = l2->val;
l2 = l2->next;
}
else
{
result->val = l1->val;
l1 = l1->next;
}
if (carry == 1)
{
result->val++;
carry = 0;
}
if (result->val > 9)
{
result->val = result->val - 10;
carry = 1;
}
if (l1 == NULL && l2 == NULL&&carry == 0)
break;
ListNode *p = new ListNode(0);
result->next = p;
result = result->next;
}
if(result->val==0&&carry==1)
result->val=1;
return head;
}
};