注意进位信息即可。结束条件。如果最后还有n的时候,一定要补充节点。然后就算遍历到的节点为null,此时对应的数应该为0。
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//进位信息
int n = 0;
//遍历到的list1节点的值
int num1;
//遍历到的list2节点的值
int num2;
//相加信息,包括进位。
int sum;
//辅助头节点。
ListNode head = new ListNode(-1);
ListNode tail = head;
//li1为null或者li2为null,此时对应的数字为0,直到全部为null为止,然后最后还有进位信息的话,也要补充最后一个节点。
while(l1!=null || l2!=null || n != 0){
num1 = l1 == null ? 0 : l1.val;
num2 = l2 == null ? 0 : l2.val;
sum = num1 + num2 + n;
//构造节点。
ListNode cur = new ListNode(sum%10);
//下一次的进位信息
n = sum/10;
//关联节点
head.next = cur;
head = cur;
//当遍历到null的时候就不用next下去了。
if(l1 != null){
l1 = l1.next;
}
if(l2 != null){
l2 = l2.next;
}
}
//最后返回辅助头节点的next即可
return tail.next;
}
}