2.兩數相加C++
阿新 • • 發佈:2021-12-16
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; } };