思路
从个位开始相加,遇到10进1
代码
var addTwoNumbers = function(l1, l2) {
//新建一个新链表
const l3 = new ListNode(0)
//遍历链表
let p1 = l1
let p2 = l2
let p3 = l3
let c = 0
//p1或者p2为空用0代替
while(p1 || p2){
const v1 = p1 ? p1.val : 0
const v2 = p2 ? p2.val : 0
//如果遇到10要将其给到下一轮
const val = v1 + v2 + c
c = Math.floor(val / 10)
//个位上的数添加到新链表上
p3.next = new ListNode(val % 10)
if(p1) p1 = p1.next
if(p2) p2 = p2.next
p3 = p3.next
}
//结束后如果进1了追加到新链表上
if(c){
p3.next = new ListNode(c)
}
//新链表在空节点后面
return l3.next
};
复杂度
时间O(n):1个while 空间O(n):新链表l3