题目:
https://leetcode-cn.com/problems/add-two-numbers/
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
答案:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1==null){
return l2;
}
if(l2==null){
return l1;
}
int sum = 0,add=0,value=0;
sum = l1.val + l2.val +add;
value = sum%10;
add = sum>=10?1:0;
ListNode result = new ListNode(value);
ListNode p = result;
ListNode next1 = l1.next;
ListNode next2 = l2.next;
while (next1!=null || next2!=null){
sum = (next1!=null?next1.val:0) + (next2!=null?next2.val:0) +add;
value = sum%10;
add = sum>=10?1:0;
p.next = new ListNode(value);
p = p.next;
if(next1!=null){
next1 = next1.next;
}
if(next2!=null){
next2 = next2.next;
}
}
p.next =add == 1? new ListNode(add):null;
return result;
}