leetcode 445 Add Two Numbers II

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        int len1=0,len2=0;
        ListNode *node1=l1,*node2=l2;
        while(node1) {
            ++len1;
            node1=node1->next;
        }
        while(node2) {
            ++len2;
            node2=node2->next;
        }
        node1=l1;node2=l2;
        while(len1>len2) {
            ListNode *node=new ListNode(0);
            node->next=node2;
            node2=node;
            ++len2;
        }
        while(len2>len1) {
            ListNode *node=new ListNode(0);
            node->next=node1;
            node1=node;
            ++len1;
        }
        int k=helper(node1,node2);
        if(k) {
            ListNode* node=new ListNode(1);
            node->next=node1;
            node1=node;
        }
        return node1;
    }
    int helper(ListNode* l1,ListNode* l2) {
        if(!l1||!l2) return 0;
        int k=0;
        k=helper(l1->next,l2->next);
        int sum=l1->val+l2->val+k;
        if(sum>9) {
            l1->val=sum-10;
            return 1;
        }
        else {
            l1->val=sum;
            return 0;
        }
    }
};

 

posted @ 2020-04-09 10:53  qiujiejie  阅读(138)  评论(0编辑  收藏  举报