题目地址
// An highlighted block /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: int getLength(ListNode* l1){ int len = 0; while(l1){ len++; l1 = l1->next; } return len; } ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { if(l1&&!l2) return l1; if(l2&&!l1) return l2; int len1 = getLength(l1); int len2 = getLength(l2); if(len2 > len1){ ListNode * temp = l1; l1 = l2; l2 = temp; } ListNode *head = l1; ListNode *preL1 = NULL; int sum = 0; int flag = 0; while(l1&&l2){ sum = l1->val + l2->val + flag; l1->val = sum % 10; flag = sum / 10; preL1 = l1; l2 = l2->next; l1 = l1->next; } while(l1){ sum = l1->val + flag; l1->val = sum % 10; flag = sum / 10; preL1 = l1; l1 = l1->next; } if(flag&&!preL1->next){ preL1->next = new ListNode(flag); preL1->next->next = NULL; } return head; } };