Add Two Numbers ---- LeetCode 002

时间:2023-03-08 20:48:56

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

/**
* 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 headNode(-);
ListNode *preNode = &headNode; int carry = ;
while(L1 != NULL || L2 != NULL)
{
const int value1 = (L1 == NULL) ? : L1->val;
const int value2 = (L2 == NULL) ? : L2->val;
L1 = (L1 == NULL) ? NULL : L1->next;
L2 = (L2 == NULL) ? NULL : L2->next; const int value = (value1 + value2 + carry) % ;
carry = (value1 + value2 + carry) / ;
preNode->next = new ListNode(value);
preNode = preNode->next;
}
if(carry == )
{
preNode->next = new ListNode(carry);
preNode = preNode->next;
}
return headNode.next;
}
};