问题描述
给定两个用链表表示的整数,每个节点包含一个数位。
这些数位是反向存放的,也就是个位排在链表首部。
编写函数对这两个整数求和,并用链表形式返回结果。
示例:
输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
输出:2 -> 1 -> 9,即912
方法一
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//在相加过程中是否出现进位
boolean isCarry = false;
ListNode dumpy = new ListNode(-1);
ListNode tmp = dumpy;
while(l1!=null||l2!=null){
//记录当前 位上的值,默认为0
int x = 0,y = 0;
if(l1!=null){
x = l1.val;
l1 = l1.next;
}
if(l2!=null){
y = l2.val;
l2 = l2.next;
}
//求和并且判断是否有进位
int result = x + y;
if(isCarry){
result++;
}
if(result>9){
isCarry = true;
}else{
isCarry = false;
}
//记录结果值
tmp.next = new ListNode();
tmp.next.val = result%10;
tmp = tmp.next;
}
if(isCarry){
tmp.next = new ListNode();
tmp.next.val = 1;
tmp = tmp.next;
}
return dumpy.next;
}
}