問題分析:
我們通過遍歷兩個鍊錶拿到每個位的值,兩個值加上前一位進製值(0或者1)模10就是該位的值,除以10就是向高位的進製值(0或者1)。
由於兩個鍊錶可以不一樣長,所以要及時判斷,一旦為null,該位的值就要變成0。
有一種情況比較特殊,比如:1->1->1->null, 9->8->8->null,最終結果為0->0->0->1->null,需要保留最高位。
而1->1->1->null, 9->8->7->null,最終結果為0->0->9->null,則不需要保留最高位,最後應該加乙個判斷。
問題求解:
publicclass
solution
prelistnode =nowlistnode;
nowlistnode = new listnode(0);
prelistnode.next =nowlistnode;
}//最後還要多來一次判斷,因為有一種可能,兩個鍊錶一樣長,最後一位又向上進了一位
val = ((l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val) + add) % 10;
add = ((l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val) + add) / 10;
nowlistnode.val =val;
//如果最後一位又向上進了一位,新的最後一位不為0,應該保留,否則就為0,應當捨棄
if(nowlistnode.val == 0)
return
resultlistnode;
}}class
listnode
}
lintcode 鍊錶求和
1.題目 你有兩個用鍊錶代表的整數,其中每個節點包含乙個數字。數字儲存按照在原來整數中相反的順序,使得第乙個數字位於鍊錶的開頭。寫出乙個函式將兩個整數相加,用鍊錶形式返回和。給出兩個鍊錶3 1 5 null和5 9 2 null,返回8 0 8 null 2.思路 考慮如何實現進製 和數的每一位如何...
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...