ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-05 20:08:36  阅读:161  来源: 互联网

标签:遍历 节点 HOT l2 输入 l1 100 LeetCode 进位


继续刷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/

标签:遍历,节点,HOT,l2,输入,l1,100,LeetCode,进位
来源: https://blog.csdn.net/qq_40967164/article/details/122330408

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有