两个数据相加是否相等(算法两数相加)

发布日期:2025-02-23 12:54:06     作者:二人世界一     手机:https://m.xinb2b.cn/know/bzn438749.html     违规举报

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例


输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 465 = 807提示每个链表中的节点数在范围 [1, 100] 内0 <= Node.val <= 9题目数据保证列表表示的数字不含前导零方法一:模拟

思路与算法

首先,我们按照示例中的结果发现我们可以同时遍历这两个链表,按照同一方向,相同的位置的数字进行类加

举例说明:

n1、n2代表两个链表相同位置的值,carry代表进位值。最终结果的链表的相同位置的值为 (n1 n2 carry) % 10 ,新的进位值为(n1 n2 carry)/ 10。

如果两个链表的长度不同,则可以认为短的链表的后面有若干个 0 。

最后,如果链表遍历结束后,如果carry > 0,那还需要在最后的链表上再附加一个节点,节点的值为 carry。

代码如下:


复杂度分析时间复杂度:O(max(m,n)),其中 m 和 n 分别为两个链表的长度。我们要遍历两个链表的全部位置,而处理每个位置只需要 O(1) 的时间。空间复杂度:O(1)。注意返回值不计入空间复杂度。写在最后

本文内容出处是力扣官网,希望和大家一起刷算法,在后面的路上不变秃但是变强!

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。

 
 
本文地址:https://xinb2b.cn/know/bzn438749.html,转载请注明出处。

推荐图文
推荐经验知识
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  违规举报  |  蜀ICP备18010318号-4  |  百度地图  | 
Processed in 0.071 second(s), 1 queries, Memory 0.57 M