题目
题解
链表模拟
// 定义一个单链表
class ListNode {
constructor(val) {
this.val = val
this.next = null
}
}
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
// 哨兵节点
const sentry = new ListNode(-1)
let cur = sentry
// 记录十进制个数
let tenCount = 0
while(l1 || l2) {
const l1Val = l1 ? l1.val : 0
const l2Val = l2 ? l2.val : 0
const sum = l1Val + l2Val + tenCount
const newVal = sum % 10
cur.next = new ListNode(newVal)
if (tenCount > 0) { tenCount -= 1 }
if (l1) { l1 = l1.next }
if (l2) { l2 = l2.next }
cur = cur.next
tenCount = Math.floor(sum / 10)
}
if (tenCount) {
cur.next = new ListNode(tenCount)
}
return sentry.next
};
// 时间复杂度 O(max(m,n))
// 空间复杂度 O(max(m,n))
PS:欢迎大家关注我的微信公众号 xyz编程日记