您的位置:首页 > 其它

LeetCode Add Two Numbers

2016-02-17 18:42 369 查看
/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* l3=l1,*p=l1;
int s=0,k=0;
while(l1&&l2)
{
k=l1->val+l2->val;
l1->val=(k+s)%10;
s=(k+s)/10;
p=l1;
l1=l1->next;
l2=l2->next;
}
while(l2||l1){
if(l2){
p->next=l2;
k=l2->val;
l2->val=(k+s)%10;
s=(k+s)/10;
p=l2;
l2=l2->next;
}
if(l1)
{
k=l1->val;
l1->val=(k+s)%10;
s=(k+s)/10;
p=l1;
l1=l1->next;
}
}
if(s!=0)
{
p->next=(struct ListNode*)malloc(sizeof(struct ListNode));
p=p->next;
p->val=1;
p->next=NULL;
}
free(l2);
return l3;
}

纯自己想的,为参考论坛答案。

充分考虑空间利用。

C语言。

2016/2/17
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: