您的位置:首页 > 其它

Leetcode 02 Add Two Numbers

2015-06-23 21:43 363 查看
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

链表处理

class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
ListNode* result_head = new ListNode(0);
ListNode* p;
p = result_head;
while (l1 != NULL&&l2 != NULL)
{
ListNode* tmp = new ListNode(0);
(*p).val += (*l1).val + (*l2).val;
(*p).next = tmp;
if ((*p).val >= 10)
{
(*p).val %= 10;
(*tmp).val += 1;
}
p = tmp;
l1 = (*l1).next;
l2 = (*l2).next;
}
if (l1 == NULL&&l2 == NULL) {}
else
{
if (l1 == NULL&&l2 != NULL)
{
while (l2 != NULL)
{
(*p).val += (*l2).val;
ListNode* tmp = new ListNode(0);
(*p).next = tmp;
if ((*p).val >= 10)
{
(*p).val %= 10;
(*tmp).val += 1;
}
p = tmp;
l2 = (*l2).next;
}
}
else
{
if (l1 != NULL&&l2 == NULL)
{
while (l1 != NULL)
{
(*p).val += (*l1).val;
ListNode* tmp = new ListNode(0);
(*p).next = tmp;
if ((*p).val >= 10)
{
(*p).val %= 10;
(*tmp).val += 1;
}
p = tmp;
l1 = (*l1).next;
}
}
}
}
p = result_head;
while (((*p).next)->next != NULL)  p = (*p).next;
if (((*p).next)->val == 0)
{
delete (*p).next;
(*p).next = NULL;
}
return result_head;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: