1. 程式人生 > 其它 >2.兩數相加C++

2.兩數相加C++

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        if(l1==NULL && l2==NULL) return NULL;
        if(l1==NULL && l2!=NULL) return l1;
        if(l1!=NULL && l2==NULL) return l2;
        ListNode* ans=new ListNode(0);
        ListNode* tmp=ans;
        
int add=0;//用於進位 int sum,val; while(l1!=NULL && l2!=NULL){ sum=add+l1->val+l2->val; add=sum/10; val=sum%10; tmp->next=new ListNode(val); tmp=tmp->next; l1=l1->next; l2=l2->next; }
//退出上個while迴圈後必有一個為空 if(l1==NULL){ while(l2!=NULL){ sum=add+l2->val; add=sum/10; val=sum%10; tmp->next=new ListNode(val); tmp=tmp->next; l2=l2->next;; } }
if(l2==NULL){ while(l1!=NULL){ sum=add+l1->val; add=sum/10; val=sum%10; tmp->next=new ListNode(val); tmp=tmp->next; l1=l1->next;; } } //進位問題 必須特判下是否為0 不是0才加 否則進位多個0 if(add!=0){ tmp->next=new ListNode(add); } return ans->next; } };