本文共 1693 字,大约阅读时间需要 5 分钟。
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {//dummy node in the head of the result, avoid judging NULL of headpublic: ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { // Start typing your C/C++ solution below // DO NOT write int main() function ListNode dummy(-1);//dummy node in the head of the result, avoid judging NULL of head ListNode* pre = &dummy; ListNode* p1 = l1; ListNode* p2 = l2; int carry = 0; while(p1 != NULL || p2 != NULL) { int a1 = p1 == NULL ? 0 : p1->val; int a2 = p2 == NULL ? 0 : p2->val; int sum = a1+a2+carry; carry = sum/10; ListNode* node = new ListNode(sum%10); pre->next = node; pre = pre->next; p1 = p1 == NULL ? NULL : p1->next; p2 = p2 == NULL ? NULL : p2->next; } if(carry != 0) pre->next = new ListNode(carry); return dummy.next; }};
second time
/** * 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) { // Start typing your C/C++ solution below // DO NOT write int main() function ListNode dummy(0); ListNode* prev = &dummy; int carry = 0; while(l1 != NULL || l2 != NULL || carry != 0) { int a = 0; int b = 0; if(l1 != NULL) a = l1->val, l1 = l1->next; if(l2 != NULL) b = l2->val, l2 = l2->next; int sum = a+b+carry; prev->next = new ListNode(sum%10); prev = prev->next; carry = sum/10; } return dummy.next; }};
转载地址:http://gaxti.baihongyu.com/