您的位置:首页 > 编程语言 > Go语言

LeetCode 2.Add Two Numbers

2017-02-25 17:42 316 查看
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *p=l1;
ListNode *q=l2;
ListNode *r=new ListNode(0);
ListNode *head=r;
int add=0;
bool first=false; //第一个非零节点是否构造
if(p!=NULL && q!=NULL)
{
for(;p!=NULL && q!=NULL;p=p->next,q=q->next)
{
ListNode *tail=new ListNode(0);
tail->val=p->val + q->val+add;//计算当前节点的数值
if(tail->val >= 10)//如果当前数值大于10,向后进位1
{
tail->val = tail->val - 10;
add=1;//进位数值
r->next=tail;
r=tail;
}
else       //当前节点数值小于10,进位0,判断是否创建了第一个节点
{
add=0;
r->next=tail;
r=tail;
}

}
}
while(p!=NULL)
{
ListNode *tail=new ListNode(0);
tail->val=p->val+add;

4000
if(tail->val>=10)
{
add=1;
tail->val=tail->val-10;
}else{
add=0;
}
r->next=tail;
r=tail;
p=p->next;
}

while(q!=NULL)
{
ListNode *tail=new ListNode(0);
tail->val=q->val+add;
if(tail->val >= 10)
{
add=1;
tail->val=tail->val-10;
}else{
add=0;
}

r->next=tail;
r=tail;
q=q->next;
}

if(add==1)  //如果最后节点扫描完后,进位为1
{ ListNode *tail=new ListNode(1);
r->next=tail;
}

head=head->next; //去掉原始新建的r节点
return head;

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