链接: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; } };