LeetCode第2题

/**
 * 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;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值