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

2 两树相加

程序员文章站 2022-06-10 22:19:32
...

2 两树相加
大数相加转化为位相加的思路

方法一:位相加循环

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
       int sum = 0;
        ListNode* result = new ListNode(0);//保留住链表头
        ListNode* temp = result;
        while (l1!=NULL||l2!=NULL||sum){
            l1 = l1!=NULL ? (sum+=l1->val, l1=l1->next) : l1;
            l2 = l2!=NULL ? (sum+=l2->val, l2=l2->next) : l2;
            temp->next = new ListNode(sum%10);
            temp = temp->next;
            sum = sum/10;
        }
        return result->next; 
    }
};

2 两树相加

方法二:递归

class Solution {
public:
    int sum = 0;
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
       if(l1==NULL&&l2==NULL&&sum==0)
            return NULL;
        l1 = l1==NULL ? l1 : (sum+=l1->val,l1=l1->next);
        l2 = l2==NULL ? l2 : (sum+=l2->val,l2=l2->next);
        ListNode* res = new ListNode(0);
        res->val = sum%10;
        sum = sum/10;
        res->next = addTwoNumbers(l1,l2);
        return res;
    }
};
相关标签: LeetCode习题