簡單來說,給兩個用linkedlist 表示的數字,你需要加起來,其實就跟高精加法的作法是一樣的。
我們需要新建立一個鏈表頭,然後這裡需要考慮進位問題,其實進位非常簡單就是普通模擬,我們弄一個 進位的變量存下進位信息,他要不是0,要不是1。
就是做鏈表的題目,要時刻檢查當前的node是不是一個空的node,否則容易爆掉
ListNode* addTwoNumber(ListNode* l1, ListNode* l2){
ListNode* dummy = new ListNode();
ListNode* ans = dummy;
int val1, val2, carry = 0;
while(l1 || l2 || carry){
val1 = val2 = 0;
if(l1) val1 = l1->val1;
if(l2) val2 = l2->val2;
int tempAns = (val1 + val2 + carry)%10;
int carry = (val1 + val2 + carry) / 10;
ans->next = new ListNode(tempAns);
ans = ans->next;
if(l1)l1 = l1->next;
if(l2)l2 = l2->next;
}
return dummy->next;
}