欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[链表]leetcode2:两数相加

程序员文章站 2022-04-04 09:03:26
...

[链表]leetcode2:两数相加
说明:使用此方法击败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;
    }
};