首页 > 代码库 > Add Two Numbers

Add Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)

Output: 7 -> 0 -> 8

思路:依次将每一位相加即可。

 1 class Solution { 2 public: 3     ListNode *addTwoNumbers( ListNode *l1, ListNode *l2 ) { 4         if( !l1 ) { return l2; } 5         if( !l2 ) { return l1; } 6         int carry = 0; 7         ListNode guard( -1 ); 8         ListNode *node = &guard; 9         while( l1 || l2 ) {10             if( l1 ) { carry += l1->val; }11             if( l2 ) { carry += l2->val; }12             node->next = new ListNode( carry%10 );13             node = node->next;14             carry /= 10;15             if( l1 ) { l1 = l1->next; }16             if( l2 ) { l2 = l2->next; }17         }18         if( carry ) { node->next = new ListNode( carry ); }19         return guard.next;20     }21 };

 

Add Two Numbers