“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”
一、题目描述
- 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
二、思路分析
- 这道题考察我们
链表相关的知识点以及递归调用- 首先我们要明白
%(取余)和/(整除) - 递归的
终止条件,链表中没有元素了 - 记得每次递归前先
将余数加上,也就是数学中的进位~
- 首先我们要明白
三、AC 代码:
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int total = l1.val + l2.val;
//整除(获取进位)
int digit = total/10;
//取余(保留当前位数字)
ListNode res = new ListNode(total%10);
//递归终止条件
if(l1.next != null || l2.next != null || digit != 0){
l1 = l1.next != null ? l1.next : new ListNode(0);
l2 = l2.next != null ? l2.next : new ListNode(0);
//先进性相加
l1.val = l1.val + digit;
//在递归
res.next = addTwoNumbers(l1, l2);
}
return res;
}
}
四、总结:
- 好了,代码撸完,我们
总结一下:- 这道题的重点在于
链表的运用,以及取余取模的理解,还有递归 - 细节,要注意
递归终止条件,以及先加上取余的数在递归。
- 这道题的重点在于