可以用递归的方式去解决,在递归的方法里增加一个参数,就是相同位置的节点的值相加之外还要加上前面两个节点相加的进位的值
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
return add(l1,l2,0);
}
private ListNode add(ListNode l1, ListNode l2,int val){
if(l1!=null||l2!=null||val!=0){
int sum=0;
if(l1!=null){
sum+=l1.val;
}
if(l2!=null){
sum+=l2.val;
}
sum+=val;
if(l1!=null){
l1.val=sum%10;
l1.next=add(l1==null?null:l1.next,l2==null?null:l2.next,sum/10);
return l1;
}else{
ListNode listNode = new ListNode(sum%10);
listNode.next=add(l1==null?null:l1.next,l2==null?null:l2.next,sum/10);
return listNode;
}
}else{
return null;
}
}
}