题解 | #两个链表生成相加链表#
两个链表生成相加链表
http://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
class Solution { public: ListNode* reverse(ListNode*root) { if (root == nullptr || root->next == nullptr)return root; ListNode*ans = reverse(root->next); root->next->next = root; root->next = nullptr; return ans; } ListNode* addInList(ListNode* head1, ListNode* head2) { // write code here ListNode*h1 = reverse(head1); ListNode*h2 = reverse(head2); int pre = 0; ListNode*newnode = new ListNode(0); ListNode*ans = newnode; while (h1&&h2) { int temp = h1->val + h2->val + pre; int a = temp % 10; pre = temp / 10; newnode->next = new ListNode(a); newnode = newnode->next; h1 = h1->next; h2 = h2->next; } if (h1 == nullptr) { while (h2) { int temp = h2->val + pre; int a = temp % 10; pre = temp / 10; newnode->next = new ListNode(a); newnode = newnode->next; h2 = h2->next; } } else if (h2 == nullptr) { while (h1) { int temp = h1->val + pre; int a = temp % 10; pre = temp / 10; newnode->next = new ListNode(a); newnode = newnode->next; h1 = h1->next; } } if(pre==1)newnode->next = new ListNode(1); return reverse(ans->next); } };倒序,相加进位然后再反序一下即可