两数相加(链表相加)
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
解题思路:
- 首席按定义一个新链表的虚拟头节点,在定义一个cur每次指向新链表的尾节点,在定义一个carry表示进位
- 其次遍历 l1 和 l2 ,每次拿到 l1 和 l2 的值,因为存在一个链表长一个链表短的情况,所以当遇到链表走到空的时候,就让他的值为0
- 让第二步得到的两个值相加再加上进位数(这里可能有的人会想着去整一个判断,去判断当前获取的值是否大于10,但是没有必要,因为对9取余它就是9,存储的也是9,对18取余它也是8,那么就不用加上判断,同样carry也是如此)
- 然后然carry取商(因为1-20以内任何数对10取商要么是0要么是1),然后new一个新的节点保存count%10的值,之后改变链表的指向
- 可以观察到上面示例三,当最后两个数加起来大于10的话