首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

2. 两数相加

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。...思路 设立一个表示进位的变量carried,建立一个新链表, 把输入的两个链表从头往后同时处理,每两个相加,将结果加上carried后的值作为一个新节点到新链表后面。 ?...(图片来自:https://github.com/MisterBooo/LeetCodeAnimation) 关键点解析 链表这种数据结构的特点和使用 用一个carried变量来实现进位的功能,每次相加之后计算...carried,并用于下一位的计算 代码 语言支持:JS,C++ JavaScript: /** * Definition for singly-linked list...描述 将两个链表的第一个节点值相加,结果转为0-10之间的个位数,并设置进位信息 将两个链表第一个节点以后的链表做带进位的递归相加 将第一步得到的头节点的next指向第二步返回的链表 C++实现 //

95210

leetcode:2 两数相加

因为js中没有链表的操作,所以通过Object来做。 作用是存储想加后的链表哈。 const q=new ListNode(0); 问题? 0是什么意思? 没有什么意思?...在相加操作上没有价值把。 如何遍历两个链表? 两个指针。 let p1=l1; let p2=l2; let p3=q; 第三个指针是新建的链表,相同的位想加后是要存储的。...carry=Math.floor(val/10); 放到相加的操作上. const val=v1+v2+carry; 然后是把个位上的数加到新链表上。...carry=Math.floor(val/10); p3.next=new ListNode(val%10); 这两句第一个是截图十位,等到下一次循环在下位相加所以不管它了。...p3=p3.next; 然后新建的相加后的指针也进1. 然后是问题: 最后时候的链表如果超过9怎么办? 进1啊。

35710

LeetCode | 2.两数相加

这次来写一下 LeetCode 的第 2 题,两数相加。 题目描述 题目直接从 LeetCode 上截图过来,题目如下: ?...上面的题就是 两数相加 题目的截图,同时 LeetCode 会根据选择的语言给出了一个类的定义或者函数的定义,然后在其中实现 两数相加 的解题过程。这次我使用 C 语言来进行完成。...只要使链表的指针逐步的移动,并使指针所指向的节点中的值进行相加相加后判断是否产生进位,如果产生进位则记录下进位的值,把进位后剩下的个位数写入链表的节点,进位的值与当前节点的下对节点相加时同时参与运算即可...链表最后的一对节点相加后也可能会产生进位,因此在循环相加后,需要判断是否产生了进位,如果有进位需要为这个进位一个单独的节点链到链表的结尾处。...{ if (l1 == NULL) { return l2; } if (l2 == NULL) { return l1; }

31920

LeetCode-2-两数相加

# LeetCode-2-两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。...: 两个链表长度一致 两个链表长度一长一短 两个链表在相加过程中产生进位,进位需要加在下一位 特例判断,当l1为空,直接返回l2;当l2为空,直接返回l1 新增l1,l2的指针t1,t2,方便链表的遍历...;新增l3哑结点和对应指针t3,用于存储相加之后的链表 相加流程: 当两个链表其中一个不为空的时候,说明还没有加完; 由于相加的过程中,链表会出现一长一短的情况,所以在其中一个链表遍历完成之后,他的next...就为空了,没有val值 我们可以将后续空的链表的值默认为0,这样在相加的时候就不会对后续没有遍历完的链表产生影响 所以对于t1,t2两个链表而言,他们的当前节点值是多少,可以由如下判断: int x =...t3.next = new ListNode(sum); 顺序移动t1,t2,t3,其中当t1,t2为空的时候就不再需要移动了,只需要下次用0相加即可 新增进位节点:如果最后遍历完毕仍然有进位,那么尾节点就是最后以进位为值的节点

13120
领券