[链表]leetcode2:两数相加
程序员文章站
2022-04-04 09:03:26
...
说明:使用此方法击败90%的人,嘿嘿嘿!
解题思路: 注意此题,不需要将链表倒置进行加减,因为最后还要倒置回来,所有同学们只需将链表从头加到尾,满10进一即可。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
ListNode *head=new ListNode(0);//建立头结点
ListNode *begin=head;
int carry=0;//进位
while(l1!=NULL||l2!=NULL||carry!=0)
{
ListNode *temp=new ListNode(0);
int sum=(l1==NULL?0:l1->val)+(l2==NULL?0:l2->val)+carry;
temp->val=sum%10;//个位数字
carry=sum/10;//进位数字
begin->next=temp;//begin指向下一节点
begin=temp;//重置当前节点
if(l1!=NULL&&l2!=NULL)
{
if(l1->next==NULL&&l2->next!=NULL)
{
l1 = l1->next==NULL?new ListNode(0):l1->next;
l2 = l2->next;
}
else if(l1->next!=NULL && l2->next==NULL)
{
l1 = l1->next;
l2 = l2->next==NULL?new ListNode(0):l2->next;
}else
{
l1 = l1->next;//更换到下一结点
l2 = l2->next;
}
}
}
return head->next;
}
};