ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
if (l1==NULL)
{
return l2;
}
if (l2==NULL)
{
return l1;
}
ListNode *p1=l1,*p2=l2;
ListNode *p3=NULL,*q=NULL,*head=NULL;
bool flag=false;//
int tempvalue;
while(p1!=NULL&&p2!=NULL)
{
tempvalue = p1->val + p2->val;
if (flag)
{
tempvalue++;
}
if (tempvalue>=10)
{
tempvalue = tempvalue - 10;
flag = true;
}
else
flag = false;
if (head==NULL)
{
head = new ListNode(tempvalue);
p3 = head;
}
else
{
q = new ListNode(tempvalue);
p3->next = q;
p3=p3->next;
}
p1=p1->next;
p2=p2->next;
}
while (p1==NULL&&p2!=NULL)
{
tempvalue = p2->val;
if (flag)
{
tempvalue++;
}
if (tempvalue>=10)
{
tempvalue = tempvalue - 10;
flag = true;
}
else
flag = false;
if (head==NULL)
{
head = new ListNode(tempvalue);
p3 = head;
}
else
{
q = new ListNode(tempvalue);
p3->next = q;
p3=p3->next;
}
p2=p2->next;
}
while (p1!=NULL&&p2==NULL)
{
tempvalue = p1->val;
if (flag)
{
tempvalue++;
}
if (tempvalue>=10)
{
tempvalue = tempvalue - 10;
flag = true;
}
else
flag = false;
if (head==NULL)
{
head = new ListNode(tempvalue);
p3 = head;
}
else
{
q = new ListNode(tempvalue);
p3->next = q;
p3=p3->next;
}
p1=p1->next;
}
if (flag)//the last jinwei
{
if (head==NULL)
{
head = new ListNode(1);
p3 = head;
}
else
{
q = new ListNode(1);
p3->next = q;
p3=p3->next;
}
}
return head;
}
这题做得比较爽,写完了都没测试,直接提交,第一次编译错误,马上改过来了。速度还可以208ms。链表这也没什么算法,逻辑不乱就行了,所以速度都差不了多少。
LeetCode Add Two Numbers
最新推荐文章于 2024-08-12 10:14:14 发布