題目
給定兩個用鏈表表示的整數,每個節點包含一個數位。
這些數位是反向存放的,也就是個位排在鏈表首部。
編寫函數對這兩個整數求和,並用鏈表形式返回結果。
示例:
輸入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
輸出:2 -> 1 -> 9,即912
進階:假設這些數位是正向存放的,請再做一遍。
示例:
輸入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295
輸出:9 -> 1 -> 2,即912
實現思路
純暴力 翻轉求和,構建單鏈表,雖然不是題目所要求,但是爲什麼leetcode不支持BigInteger
代碼
這個是錯誤的哦
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
while (l1 != null) {
sb1.append(l1.val);
l1 = l1.next;
}
while (l2 != null) {
sb2.append(l2.val);
l2 = l2.next;
}
sb1 = sb1.reverse();
sb2 = sb2.reverse();
BigInteger i1=new BigInteger(sb1.toString());
BigInteger i2=new BigInteger(sb2.toString());
/* long i1 = Long.parseLong(sb1.toString());
*//* System.out.println("i1:" + i1);*//*
long i2 = Long.parseLong(sb2.toString());
*//* System.out.println("i2:" + i2);*/
/* System.out.println("answer:" + answer);*/
String answers = String.valueOf(i1.add(i2));
char[] chars = answers.toCharArray();
ListNode root = new ListNode(0);
ListNode temp = root;
for (int i = chars.length - 1; i >= 0; i--) {
ListNode p = new ListNode(Integer.parseInt(chars[i] + ""));
temp.next = p;
temp = p;
}
return root.next;
}
}