You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
下面是我的解法
// 一下部分为自己最初的解法(刚开始题目理解的有问题,只能将错就错,改成这样了)
// LinkedList<Integer> tempL1 = new LinkedList<Integer>();
// while(l1!= null){
// tempL1.add(l1.val);
// l1 = l1.next;
// }
// LinkedList<Integer> tempL2 = new LinkedList<Integer>();
// while(l2!= null){
// tempL2.add(l2.val);
// l2 = l2.next;
// }
//
// int len = tempL2.size()-tempL1.size();
// if(len >0){
//
// for(int i=0; i<len; i++){
// tempL1.add(0);
// }
// }else{
// for(int i=0; i<len*-1; i++){
// tempL2.add(0);
// }
// }
//
// LinkedList<Integer> tempResult = new LinkedList<Integer>();
// int sum = 0;
// for(int i=0; i<tempL2.size(); i++){
// int temp = sum +tempL1.get(i) + tempL2.get(i);
// tempResult.add(temp%10);
// sum = temp/10;
// }
// if(sum!=0){
// tempResult.add(sum);
// }
//
// LinkedList<ListNode> result = new LinkedList<ListNode>();
// for(int item : tempResult){
// result.add(new ListNode(item));
// }
//
// for(int i=0; i<result.size() -1;i++){
// result.get(i).next = result.get(i+1);
// }
//
// if(result.size() > 0){
// return result.get(0);
// }else{
// return null;
// }
ListNode temp = new ListNode(0);
ListNode result = temp;
if(l1 == null) return l2;
if(l2 == null) return l1;
int sum = 0;
int i = 0;
while((l1 != null) || (l2 != null)){
if(l1 != null){
sum +=l1.val;
l1 = l1.next;
}
if(l2 != null){
sum += l2.val;
l2 = l2.next;
}
ListNode ln = new ListNode(sum%10);
sum = sum/10;
result.next = ln;
result = result.next;
}
if(sum != 0){
ListNode ln = new ListNode(sum);
result.next = ln;
}
return temp.next;