题目描述
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 :
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
代码
class ListNode{
int val;
ListNode next;
ListNode(){};
ListNode(int val){
this.val=val;
}
ListNode(int val,ListNode next){
this.next=next;
this.val=val;
}
}
//链表的求和
public class addNumberSum_LinkedNode {
public ListNode addTwoNumBers(ListNode l1,ListNode l2){
ListNode res=new ListNode();//初始化一个新的ListNode:虚拟节点
ListNode curr=res;//定义一个指针,用来存储下个数,这样相当于就把虚拟节点连接了起来;构成了一个链表
int carry=0;
while (l1!=null||l2!=null){
int x=l1==null?0:l1.val;
int y=l2==null?0:l2.val;
int sum=x+y+carry;
curr.next=new ListNode(sum%10);
curr=curr.next;
carry=sum/10;
if(l1!=null) l1=l1.next;
if(l2!=null) l2=l2.next;
}
if(carry!=0){
curr.next=new ListNode(carry);
}
return res.next;
}
}