感覺(jué)這題就是在幫我跳出大數(shù)相加的坑
這是我自己的答案,在long范圍內(nèi)都是對(duì)的,但是數(shù)字超過(guò)取值范圍的時(shí)候就崩潰了,這題的本意應(yīng)該就是教我們用單鏈表去算兩數(shù)和,唉。
錯(cuò)誤答案(非常萌新的錯(cuò)誤答案······)放下,回頭再貼正確答案
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public static long pow(long m, long n){
long result=1; //0次方時(shí)為1
for(int i=0;i<n;i++){
result *= m; //每次乘上次計(jì)算次方的結(jié)果
}
return result; //計(jì)算好了,返回值}
}
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int length1=1;
int length2=1;
ListNode l3=l1;
while(l3.next!=null){
length1++;
l3=l3.next;
}
long a=0;//第一個(gè)整數(shù)
for(int i=0;i<length1;i++){
a=a+l1.val* pow(10,i);
l1=l1.next;
}
System.out.println(a);
ListNode l4=l2;
while(l4.next!=null){
length2++;
l4=l4.next;
}
long b=0;//第一個(gè)整數(shù)
for(int i=0;i<length2;i++){
b=b+l2.val* pow(10,i);
l2=l2.next;
}
System.out.println(b);
long c=a+b;
System.out.println( c);
String s=String.valueOf(c);
ListNode temp;
ListNode l5=new ListNode(0);
for(int i=s.length();i>0;i--){
ListNode node=new ListNode(s.charAt(i-1)-'0');
temp=l5;
while(temp.next!=null){
temp = temp.next;
}
temp.next=node;
}
l5=l5.next;
return l5;
}
}
···自己寫(xiě)的最終雖然寫(xiě)出來(lái)了,但是好長(zhǎng)。。。還是看官方解答吧