两数相加
1 代码(Java)
题目: 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
知识点:
链表:创建、修改(头和尾)
思路:
由于是逆序存储,所以直接可以计算。注意进位carry。
1 代码(Java)
class Solution {
public ListNode
addTwoNumbers(ListNode l1
, ListNode l2
) {
ListNode head
=null
,tail
=null
;
int carry
= 0;
while(l1
!=null
|| l2
!=null
){
int n1
= l1
==null
? 0:l1
.val
;
int n2
= l2
==null
? 0:l2
.val
;
int sum
= n1
+ n2
+ carry
;
if(head
==null
){
head
= tail
= new ListNode(sum
%10);
}else{
tail
.next
= new ListNode(sum
%10);
tail
= tail
.next
;
}
carry
= sum
/10;
if(l1
!=null
){
l1
=l1
.next
;
}
if(l2
!=null
){
l2
=l2
.next
;
}
}
if (carry
!=0){
tail
.next
= new ListNode(carry
);
}
return head
;
}
}