/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(-1);//傀儡头
ListNode cur = dummy;//
int t = 0;//t的主要作用就是为了相加看看是否有数字超出
或等于10,以便于下一次的相加
//当l1 或者 l2链表未走到空节点的时候进去
while(l1 != null || l2 != null) {
//抽出当前节点存的值用变量t加上
if(l1 != null) {
t += l1.val;
l1 = l1.next;
}
//抽出当前节点存的值用变量t加上
//如果为null就不用进去 也不影响最后的答案
if(l2 != null) {
t += l2.val;
l2 = l2.next;
}
//因为第一个节点是傀儡节点
//并且后面的节点并没有实例化
//所以我们用%将10的余数留下来存放
cur.next = new ListNode(t % 10);
//超出或等于10的除以10的数可以留到下一个节点
t /= 10;
//去往新建的节点的位置 以便于进行下一个节点的新建
cur = cur.next;
}
//当l1 和 l2 的链表全部都走到尽头
//如果t还有不是0的数字存放在里面
//我们就可以再加上一个节点 为最后一个结果
if(t != 0){
cur.next = new ListNode(t);
}
//因为dummy的头结点是-1
//所以我们传回去dummy的next就好了
return dummy.next;
}
}
10-19
651