您的位置:首页 > 其它

leetcode 第4题 Add Two Numbers

2014-04-18 17:43 381 查看
    这题其实不算难,我的思路一开始也是对的,可多次提交错误,是因为我在头结点的问题上出了差错,这个地方是不带头结点的。需要注意的就一点,进位问题要一直走到长的那个链的尾部。

ListNode *myfunction(ListNode *l1, ListNode *l2,int dis) {

       ListNode *p1=l1;

       ListNode *p2=l2;

       ListNode *p3=new ListNode(0);

       ListNode *p4=p3;

       int k=0;

       while(p2){

            p3->next=new ListNode(0);

            p3->next->val=p1->val+p2->val+k;

            k=p3->next->val/10;

            p3->next->val=p3->next->val%10;

            p1=p1->next;

            p2=p2->next;

            p3=p3->next;

        }

        while(dis--){

                    p3->next=new ListNode(0);

                    p3->next->val=p1->val+k;

                    k=p3->next->val/10;

                    p3->next->val=p3->next->val%10;

                    p1=p1->next;p3=p3->next;

       }

       if(k){p3->next=new ListNode(0);p3=p3->next;p3->val=k;}

        return p4;

}

class Solution {

public:

    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {

        ListNode *L1=l1;

        ListNode *L2=l2;

        int dis;

        ListNode *sum=NULL;

        int len1=0,len2=0; 

        while(L1!=NULL){len1++;L1=L1->next;}

        while(L2!=NULL){len2++;L2=L2->next;}

        L1=l1;L2=l2;

       

        if(len1>len2){dis=len1-len2;sum=myfunction(L1,L2,dis);}

        else { dis=len2-len1;sum=myfunction(L2,L1,dis);}//add data

        if(sum->next)

        return sum->next;

        else return sum;

       

    }

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