人间清醒
频道主
第二题: 两数相加
难度
:中等

题目描述
:

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头
示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2:
输入:l1 = [0], l2 = [0] 输出:[0] 示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1]
题目解答
:

这道题目要求我们对两个用链表表示的非负整数进行相加操作,并返回相加后的结果,同样用链表表示。
解题思路
:

1. 遍历链表: 我们从头开始遍历两个链表 l1 和 l2,同时维护一个进位 carry,初始为 0。
2. 逐位相加: 对于每一位,将 l1 和 l2 对应的节点值相加,再加上进位 carry 的值。
3. 更新进位和当前位的值: 将相加结果除以 10 得到当前位的值,将余数作为当前位的值存入结果链表中,并更新进位为除以 10 的商。
4. 处理剩余节点和最后的进位: 如果一个链表比另一个长,或者最后还有进位,需要继续遍历剩余节点,并加上进位。
5. 构建结果链表: 最后构建的结果链表即为相加后的结果。
JavaScript 实现:
这段代码首先定义了 ListNode 类用于表示链表节点,然后编写了 addTwoNumbers 函数来实现两数相加的逻辑。通过遍历两个链表,同时处理进位和构建新的结果链表,最后返回相加后的结果链表头部。
- 下载图片
- 复制图片
2024-07-08
浏览103
力扣算法题
登录后评论
4
评论
分享