/**
* 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) {
char a[1005] = { 0 }, b[1005] = {0};
int i, j;
ListNode* temp = l1;
for (i = 0; temp != NULL; i++, temp = temp->next)
a[i] = temp->val;
temp = l2;
for (j = 0; temp != NULL; j++, temp = temp->next)
b[j] = temp->val;
char c[1005];
/*
for (int k = 0; k < i; k++)
c[k] = a[i - 1 - k];
strcpy(a, c);
for (int k = 0; k < j; k++)
c[k] = b[j - 1 - k];
strcpy(b, c);
*/
memset(c, 0, sizeof(c));
//cout << sizeof(c) << endl;
int ca = 0,k;
for (k = 0; k < min(i, j); k++){
c[k] = (a[k] + b[k] + ca)%10;
ca = (a[k] + b[k] + ca) / 10;
}
if (i<j)
memcpy(a, b,sizeof(a));
while (k < max(i,j)){
c[k] = (a[k] + ca) % 10;
ca = (a[k] + ca) / 10;
k++;
}
if (ca > 0)
c[k++] = ca;
ListNode* rst = NULL, **l = &rst;// = new ListNode(c[0]);
for (i = 0; i < k; i++){
*l = new ListNode(c[i]);
(*l)->next = NULL;
l = &((*l)->next);
}
return rst;
}
};
* 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) {
char a[1005] = { 0 }, b[1005] = {0};
int i, j;
ListNode* temp = l1;
for (i = 0; temp != NULL; i++, temp = temp->next)
a[i] = temp->val;
temp = l2;
for (j = 0; temp != NULL; j++, temp = temp->next)
b[j] = temp->val;
char c[1005];
/*
for (int k = 0; k < i; k++)
c[k] = a[i - 1 - k];
strcpy(a, c);
for (int k = 0; k < j; k++)
c[k] = b[j - 1 - k];
strcpy(b, c);
*/
memset(c, 0, sizeof(c));
//cout << sizeof(c) << endl;
int ca = 0,k;
for (k = 0; k < min(i, j); k++){
c[k] = (a[k] + b[k] + ca)%10;
ca = (a[k] + b[k] + ca) / 10;
}
if (i<j)
memcpy(a, b,sizeof(a));
while (k < max(i,j)){
c[k] = (a[k] + ca) % 10;
ca = (a[k] + ca) / 10;
k++;
}
if (ca > 0)
c[k++] = ca;
ListNode* rst = NULL, **l = &rst;// = new ListNode(c[0]);
for (i = 0; i < k; i++){
*l = new ListNode(c[i]);
(*l)->next = NULL;
l = &((*l)->next);
}
return rst;
}
};