链接:https://leetcode.com/problems/add-two-numbers/
思路:
两条链表,从其中一段开始修改,直接在原有节点上做加法。碰到其中一条结束的时候,如果另一条还在继续,则把next指向另一条链表往后一个节点(感觉像是铁轨并轨一样)。
注意如果加起来还有多,要新建一个节点存放。
代码:
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* retNode = l1;
ListNode* prevNode = NULL;
int res = 0;
while (l1 != NULL && l2 != NULL) {
l1->val += (l2->val + res);
res = 0;
while (l1->val >= 10) {
l1->val -= 10;
res += 1;
}
prevNode = l1;
l1 = l1->next;
l2 = l2->next;
}
if (res == 0 && l1 == NULL && l2 == NULL)
return retNode;
ListNode* currNode = l1;
if (l1 == NULL) {
prevNode->next = l2;
currNode = l2;
}
while (currNode != NULL && res != 0) {
currNode->val += res;
res = 0;
while (currNode->val >= 10) {
currNode->val -= 10;
res += 1;
}
prevNode = currNode;
currNode = currNode->next;
}
if (res > 0) {
//Add Node
ListNode* endNode = new ListNode(res);
prevNode->next = endNode;
}
return retNode;
}
};
