LeetCode 热题 HOT 100 第2天:“两数相加”

继续刷LeetCode 热题 HOT 100 的题目,并且在博客更新我的solutions。在csdn博客中我会尽量用文字解释清楚,相关Java代码大家可以前往我的个人博客jinhuaiyu.com中查看。
时间:2022.1.5
题目:两数相加
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
在这里插入图片描述
输入: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, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零
solution:
在我考研入学专业课的时候也有一道类似的题目,那题还不是逆序。这个题目给的是逆序,也就是说可以直接从第一个节点开始合并l1和l2。我们初始化一个新链用来装结果,然后开始遍历两条输入链,相同位置的相加再加上进位值(初始为0),如果大于10就取余并且把进位值置为1,否则直接把进位值重置为0。用do while,判断条件是两条输入链当前遍历到的节点的next都非空。
当这轮遍历结束时,还有一条输入链可能没遍历完,如果此时进位值为0,则直接把没遍历完的输入链附到结果链后面;如果进位值此时为1,说明还要把这个1通过遍历剩下的输入链合并到结果链里。
思想上没什么弯弯绕绕,主要是一些地方要注意判断条件和特殊情况,比如要保存到结果链的首节点用于输出,如果把两条输入链全都合到结果链上后,进位值还是1,说明还没算完,要在结果链最后再加上一个值为1的节点。
Finally,代码放在我的个人博客http://jinhuaiyu.com/leetcode-add-two-numbers/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值