前言
Leetcode 算法题是一个全新的文章系列,该系列将会抽选 Leetcode 上题目记录解题思路以及总结等
tips: 为节省文章篇幅,题目描述以及相关示例本系列文章中不再额外赘述,可以对照题目原链接查看
本篇为 Leetcode 第 2 题-两数相加,题目链接:两数相加
题解
根据题目描述以及示例分析可知,我们最终需要得到一个链表,并且链表只需要将给到的l1
、l2
两个链表按节点进行求和运算即可,注意考虑进位情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
var addTwoNumbers = function (l1, l2) { let carry = 0, head = null, curr = null while (l1 || l2) { const v1 = l1?.val ?? 0 const v2 = l2?.val ?? 0 const sum = v1 + v2 + carry if (!head) { head = curr = new ListNode(sum % 10) } else { curr.next = new ListNode(sum % 10) curr = curr.next } carry = Math.floor(sum / 10) l1 && (l1 = l1.next) l2 && (l2 = l2.next) } if (carry) { curr.next = new ListNode(carry) } return head }
|
复杂度分析: