
import java.util.*;
public class Solution {
public ListNode addInList (ListNode head1, ListNode head2) {
if(head1 == null ) return head2;
if(head2 == null ) return head1;
ListNode p = head1;
ListNode q = head2;
int l1 = 0;
while(p!=null){
l1 ++ ;
p = p.next;
}
int l2 = 0;
while(q!=null){
l2 ++ ;
q = q.next;
}
p = head1;
q = head2;
//对短的链表前面补0
if(l1 < l2){
for(int i = 0 ; i < l2 - l1 ; i ++){
ListNode p1 = new ListNode(0);
p1.next = p;
p = p1;
}
}else if(l1 > l2){
for(int i = 0 ; i < l1 - l2 ; i ++){
ListNode q1 = new ListNode(0);
q1.next = q;
q = q1;
}
}
ListNode res = add(p,q);
if(res.val>=10){
ListNode res1 = new ListNode(res.val/10);
res.val%=10;
res1.next= res;
res = res1;
}
return res;
}
public ListNode add(ListNode head1 ,ListNode head2){
ListNode res = new ListNode(0);
//从尾开始 遍历到尾部开始计算
if(head1.next != null && head2.next != null)
res.next = add(head1.next,head2.next);
int l = 0;
//判断当前的下一个节点的val是否超过等于10;
if(res.next!=null){
l = res.next.val/10;
res.next.val%=10;
}
int l1 = head1.val;
int l2 = head2.val;
res.val = l1 + l2 + l;
return res;
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)