这道题没做过。
1、将链表反转
2、将链表逐位相加,新建一个节点放相加结果,并且计算一次新建一个节点。
当第一个链表的节点不为空时,加第一个链表的节点,next
当第二个链表的节点不为空时,加第二个链表的节点,next
再和进位相加
这个和决定进位和存入节点的数,新节点next
public ListNode reverseList(ListNode head){
if(head==null)return null;
ListNode pre=null;
ListNode temp=head.next;
while(temp!=null){
head.next=pre;
pre=head;
head=temp;
temp=temp.next;
}
head.next=pre;
return head;
}
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ll1=reverseList(l1);
ListNode ll2=reverseList(l2);
ListNode headd=new ListNode(0);
ListNode node=headd;
int jin=0,num=0;
while(ll1!=null||ll2!=null||jin!=0) {
int sum=0;
if(ll1!=null){
sum=sum+ll1.val;
ll1=ll1.next;
}
if(ll2!=null){
sum=sum+ll2.val;
ll2=ll2.next;
}
sum=sum+jin;
jin=sum/10;
num=sum%10;
node.next=new ListNode(num);
node=node.next;
}
return reverseList(headd.next);
}