Add Two Numbers

来源:互联网 发布:易建联nba数据统计 编辑:程序博客网 时间:2024/06/05 07:09
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {        if(!l1)        {            return l2;        }        if(!l2)        {            return l1;        }                int val1=l1->val;        int val2=l2->val;        int carrier=(val1+val2)/10;        int sum=(val1+val2)%10;        ListNode* res=new ListNode(sum);        ListNode* cpres=res;        l1=l1->next;        l2=l2->next;        while(l1&&l2)        {            val1=l1->val;            val2=l2->val;            sum=(val1+val2+carrier)%10;            carrier=(val1+val2+carrier)/10;            ListNode* cur=new ListNode(sum);            cpres->next=cur;            cpres=cur;            l1=l1->next;            l2=l2->next;        }        if(l1)        {            while(l1)            {                val1=l1->val;                sum=(val1+carrier)%10;                carrier=(val1+carrier)/10;                ListNode* cur=new ListNode(sum);                cpres->next=cur;                cpres=cur;                l1=l1->next;            }        }        if(l2)        {            while(l2)            {                val2=l2->val;                sum=(val2+carrier)%10;                carrier=(val2+carrier)/10;                ListNode* cur=new ListNode(sum);                cpres->next=cur;                cpres=cur;                l2=l2->next;            }        }        if(carrier)        {            ListNode* last=new ListNode(carrier);            cpres->next=last;        }        else        {            cpres->next=NULL;        }        return res;            }};

0 0
原创粉丝点击