您的位置:首页 > 其它

Lintcode: Add Two Numbers

2015-11-26 20:15 423 查看
C++

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
/**
* @param l1: the first list
* @param l2: the second list
* @return: the sum list of l1 and l2
*/
ListNode *addLists(ListNode *l1, ListNode *l2) {
// write your code here
if (l1 == NULL) {
return l2;
}
if (l2 == NULL) {
return l1;
}
ListNode *ptr1 = l1, *ptr2 = l2;
ListNode *result = new ListNode(-1);
ListNode *pre = result;
int carry = 0, val = 0;
while (ptr1 != NULL || ptr2 != NULL) {
int val1 = ptr1 == NULL?0:ptr1->val;
int val2 = ptr2 == NULL?0:ptr2->val;
int sum = val1 + val2 + carry;
val = sum;
carry = sum/10;
pre->next = new ListNode(val);
pre = pre->next;
if (ptr1!=NULL)
{
ptr1 = ptr1->next;
}
if (ptr2!=NULL)
{
ptr2 = ptr2->next;
}
}
if (carry == 1) {
pre->next = new ListNode(1);
}
return result->next;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: