题目描述: 解题思路:
先翻转两个链表,再进行末尾相加
解题代码:
function ReverseList(pHead) {
let res = null;
let cur = pHead;
while(cur){
let temp = cur.next;
cur.next = res;
res = cur;
cur = temp;
}
return res;
}
function addInList( head1 , head2 ) {
// write code here
let l1 = ReverseList(head1); // 翻转链表1
let l2 = ReverseList(head2); // 翻转链表2
let res = null; // 来返回最终的结果
let cnt = 0;
while(l1 || l2) {
let x1 = l1===null ? 0 : l1.val;
let x2 = l2===null ? 0 : l2.val;
let sum = x1 + x2 + cnt; //本位总和
cnt = Math.floor(sum / 10); // 查看是否有进位
// 进行节点插入
let newNode = new ListNode(sum % 10);
newNode.next = res;
res = newNode;
//链表的移动
l1 = l1==null ? null : l1.next;
l2 = l2==null ? null : l2.next;
}
// 若cnt>0则存在进位,得插入一个节点
if(cnt) {
let newNode = new ListNode(cnt);
newNode.next = res;
res = newNode;
}
return res;
}