- -简单题
处理好进位,还有两个链表不一样长就好
/** * 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) { // Note: The Solution object is instantiated only once and is reused by each test case. if (l1 == NULL) return l2; if (l2 == NULL) return l1; int val = (l1 -> val + l2 -> val) % 10 ; int mod = (l1 -> val + l2 -> val) / 10; ListNode* head = new ListNode(val); ListNode* tmp = head; l1 = l1 -> next ; l2 = l2 -> next; while(l1 != NULL && l2 != NULL){ val = (l1 -> val + l2 -> val + mod) % 10; mod = (l1 -> val + l2 -> val + mod) / 10; ListNode* newN = new ListNode(val); tmp -> next = newN; tmp = newN; l1 = l1 -> next ; l2 = l2 -> next; } if(l1 != NULL){ while(l1 != NULL) { val = (l1 -> val + mod) % 10; mod = (l1 -> val + mod) / 10; ListNode* newN = new ListNode(val); tmp -> next = newN; tmp = newN; l1 = l1 -> next; } } if(l2 != NULL){ while(l2 != NULL) { val = (l2 -> val + mod) % 10; mod = (l2 -> val + mod) / 10; ListNode* newN = new ListNode(val); tmp -> next = newN; tmp = newN; l2 = l2 -> next; } } if(mod > 0){ ListNode* newN = new ListNode(mod); tmp -> next = newN; } return head; } };