1. 程式人生 > 實用技巧 >【leetcode】2. 兩數相加

【leetcode】2. 兩數相加

#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; }