😐 LeetCode 2. 两数相加 [链表]
454 words
2 minutes
😐 LeetCode 2. 两数相加 [链表]
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:
输入: l1 = [2,4,3], l2 = [5,6,4]
输出: [7,0,8],即 342 + 465 = 807
示例 2:
输入: l1 = [2,4,3], l2 = [2,4,3]
输出: [0]
示例 3:
输入: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出: [8,9,9,9,0,0,0,1]
思路
- 链表是逆序存的,
head处对应的就是个位数 - 需要返回的是一个新链表,首先对个位数求和,将其结果作为新链表的
head - 在求和时用一个变量
i存储进位,进位非0即1 - 当
l1和l2长度相同时,同时进行遍历,求和结果加上进位后mod 10 - 当
l1和l2长度不相同时,有一方遍历结束后,单独遍历另一方 - 最后检查进位是否计算完毕,否则的话创建一个新的
val = 1的节点接在循环结束的node后,返回个位数求和得到的head即可