給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)在計算機中實現兩個數相加的方法是輸出:7 -> 0 -> 8
原因:342 + 465 = 807
s =a
+b+c
s = a + b + c
s=a+b+
cs-和,a-被加數,b-被加數,c-進製
注意事項
1.初始時 c=0
c=0c=
02.當其中乙個鍊錶的數加完時,計算的式子將變成s=a
+c
s = a + c
s=a+
c(或s=b
+c
s = b + c
s=b+
c)的形式,因此要對剩餘的鍊錶中的資料繼續相加。
3.當所有的鍊錶中的元素已經計算完畢,如果c!=
0c!=0
c!=0
,那麼應該給結果鍊錶多分配乙個結點儲存進製。
4.鍊錶的輸入採用頭插法,根據計算過程和結果的形式,結果鍊錶的生成採用尾插法;為了便於鍊錶的操作,開始時給結果鍊錶分配乙個空結點,只需返回空結點指向的鍊錶即可。
#include#includeusing namespace std;
/*** definition for singly-linked list.
* struct listnode
* };
*/struct listnode
};class solution
listnode* addtwonumbers(listnode* l1, listnode* l2)
if (l1)
}else if (l2)
} if (c)
return ans->next;
}};int main()
while (cin >> t)
solution s;
listnode * c;
c = s.addtwonumbers(a, b);
return 0;
}
Leetcode每日一題 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。剛拿到題目的時候沒有仔細思考,先想的是寫乙...
每日一題 兩數相加(中等)
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 ...
每日一題 2 兩數相加
1 題目 給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 1 輸入 l1 2,4,3 l2 5,6,4 輸出 7...