当前位置 博文首页 > 龚厂长的博客:leetcode-2. 两数相加
题目:两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
思路:
这个题目很简单,就是模拟小学学的加法就可以了,一位一位的加和,如果有进位就进到上一位。
注意:输入的两个数字可能很大,超过long的表示范围。
代码如下:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int c=0;//既表示进位又表示结果
ListNode res=new ListNode();//表示最后的返回结果
ListNode resList=res;
while(true){
if(l1!=null){
c+=l1.val;
l1=l1.next;
}
if(l2!=null){
c+=l2.val;
l2=l2.next;
}
resList.val=c%10;
c=c>=10?1:0;
if(l1!=null||l2!=null||c!=0){
resList.next=new ListNode();
resList=resList.next;
}else{
break;
}
}
return res;
}
运行结果: