首页 > 其他 > 详细

【leetcode】2. 两数相加

时间:2020-12-04 14:36:26      阅读:21      评论:0      收藏:0      [点我收藏+]

 

#define MANLEN 1000
void recursion(struct ListNode* l1, struct ListNode* l2,int* res,int* len,int* flag,int* pst){
    if(l1 || l2){
        *(pst)=(l1)?1 :0;
        int temp1=(l1)?l1->val :0;
        int temp2=(l2)?l2->val :0;
        res[(*len)++]=( temp1 + temp2 + *flag )%10;;
        *flag = ( (temp1 + temp2 + *flag) >= 10 )?1 :0;
    }
    if(!l1 && !l2){
        if(*flag)
            res[(*len)++]=1;
        return;
    }        
    recursion((l1)?l1->next:l1,(l2)?l2->next:l2,res,len,flag,pst);
    if(*pst)
        l1->val=res[--(*len)];
    else
        l2->val=res[--(*len)];
}

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
    int res[MANLEN]={0};
    int len=0, pst=0, flag=0;
    recursion(l1,l2,res,&len,&flag,&pst);
    if(len>0){
        struct ListNode* p=(struct ListNode*)calloc(sizeof(struct ListNode),1);
        p->val=res[0];
        p->next=(pst)?l1 :l2;
        return p;
    }        
    return (pst)?l1 :l2;    
}

 

【leetcode】2. 两数相加

原文:https://www.cnblogs.com/ganxiang/p/14085329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!