leetcode_add_two_numbers 发表于 2016-11-29 难度:Medium 解题思路:一位一位加,记得处理最后的进位。代码如下: 1234567891011121314151617181920212223242526272829303132333435/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* res = new ListNode(-1); ListNode* cur = res; int carry = 0; while(l1 != NULL || l2 != NULL) { int n1 = l1==NULL?0:l1->val; int n2 = l2 == NULL ? 0 : l2->val; int sum = n1+n2+carry; carry = sum / 10; sum = sum % 10; ListNode *new_node = new ListNode(sum); cur->next = new_node; cur = new_node; if(l1 != NULL) l1 = l1->next; if(l2 != NULL) l2 = l2->next; } if(carry>0) { ListNode *new_node = new ListNode(carry); cur->next = new_node; } return res->next; }};