1.題目
你有兩個用鍊錶代表的整數,其中每個節點包含乙個數字。數字儲存按照在原來整數中相反
的順序,使得第乙個數字位於鍊錶的開頭。寫出乙個函式將兩個整數相加,用鍊錶形式返回和。
給出兩個鍊錶3->1->5->null
和5->9->2->null
,返回8->0->8->null
2.思路
考慮如何實現進製、和數的每一位如何得到、當鍊表l1與l2不一樣長怎麼辦、最後一位加和為兩位數時需要增加乙個節點盛放。
首先:從l1和l2頭結點處開始各取乙個值進行求和(注意 在迴圈中要加上上一位數求和後的進製),將求和後的數模十取餘即求得和中的該位數字,新增到新鍊錶中。
當迴圈到有乙個空了之後,只對沒空的那個鍊錶剩餘的位數逐一重複上述迴圈(需要用while迴圈是因為考慮進製)。
最後一位加和為兩位數時,在和鍊錶最後增加乙個節點存放多出來的一位數字。
3.**
/*** definition for singly-linked list.
* struct listnode
* };
*/class solution
listnode *extra;
if(l1==null)
if(l2==null)
while(extra!=null)
if(t!=0)
return head->next;}};
4.感想
遇到的第乙個難題是不知道怎麼讓進製迴圈起來,覺得以前的學習有點不熟悉了。
最後就是不停的mle,因為我一開始寫的是只剩乙個不空的時候分別由l1、l2兩種情況迴圈了一遍,不知道為什麼測試資料過了最後提交就是過不去。。。。暈乎乎的。。。
LintCode 鍊錶求和
1.描述 你有兩個用鍊錶代表的整數,其中每個節點包含乙個數字。數字儲存按照在原來整數中相反的順序,使得第乙個數字位於鍊錶的開頭。寫出乙個函式將兩個整數相加,用鍊錶形式返回和。樣例 給出兩個鍊錶3 1 5 null和5 9 2 null,返回 8 0 8 null 2.分析 第一眼看過去覺得這個題目把...
LintCode 鍊錶求和
描述 你有兩個用鍊錶代表的整數,其中每個節點包含乙個數字。數字儲存按照在原來整數中相反的順序,使得第乙個數字位於鍊錶的開頭。寫出乙個函式將兩個整數相加,用鍊錶形式返回和。樣例 給出兩個鍊錶3 1 5 null和5 9 2 null,返回8 0 8 null definition for singly...
LintCode 鍊錶求和
問題分析 我們通過遍歷兩個鍊錶拿到每個位的值,兩個值加上前一位進製值 0或者1 模10就是該位的值,除以10就是向高位的進製值 0或者1 由於兩個鍊錶可以不一樣長,所以要及時判斷,一旦為null,該位的值就要變成0。有一種情況比較特殊,比如 1 1 1 null,9 8 8 null,最終結果為0 ...