概述
目录
1.每日一句
2.作者简介
『LeetCode|每日一题』链表求和
1.每日一题
2.解题思路
2.1 思路分析
2.2 核心代码
2.3 完整代码
2.4 运行结果
1.每日一句
蝴蝶所计算的,并非岁月,而是刹那,因此蝴蝶拥有充足的时间
2.作者简介
????个人主页:XiaoXiaoChen-2716
????学习专栏:力扣专栏
????发布日期:2022/10/7
『LeetCode|每日一题』链表求和
1.每日一题
原文链接--->点我
2.解题思路
2.1 思路分析
首先看到题目不能被例子迷惑了,因为两个链表的长度不一定是相同的,刚开始我就犯了这个错
S1:首先定义一个头节点和下一个节点,都为空节点,然后一个一个把每一位所计算的值连接成一个链表,还需要一个整型变量来存进位值;
S2:定义两个整型变量,用来把链表的节点值存储以便于算和,当然如果l1节点和l2节点都为空的话就没必要算了,这句话就是循环的条件;
S3:首先很容易知道答案链表中的数应该为(l1.val + l2.val + jinwei) % 10,也就是总和的个位,接下来计算都算完之后得做出一个判断,如果头节点为空的话,那么此时头节点的值就应该是求余之后的那个数,此时还有一个重要的步骤,next = head(head和next指向了同一个节点head),如果没有这一步,那么next.next会报空指针错误,读者可以试一下。如果此时头节点不为空,那么应该把next的下一个节点赋值为sum % 10,也就是next.next = new ListNode(sum % 10),然后把next = next.next(把这两个节点同时指向next.next节点的位置);
S4:接下来需要把进位算出来,也就是sum / 10,为下一次计算做准备;
S5:如果每一位都算完之后,进位不为0,也就是说最高位还有进位,这时需要把进位给next.next,也就是最高位
补充:在head不为空的时候,要记得每次把next和next.next两个节点指向同一个位置,也就是指向下一个要计算的位置,如果单单的只写next = new ListNode(sum % 10),那么此时就是head,next,和new ListNode(sum % 10)三个节点同时指向了同一个节点,那么这个链表永远都只有一个节点,读者可以去试试
2.2 核心代码
int a1 , a2;
if(l1 != null){
a1 = l1.val;
}else {
a1 = 0;
}
if(l2 != null){
a2 = l2.val;
}else {
a2 = 0;
}
int sum = a1 + a2 + jinwei;
if(head == null){
head = new ListNode(sum % 10);
next = head;
}else {
next.next = new ListNode(sum % 10);
next = next.next;
}
jinwei = sum / 10;
if(l1 != null){
l1 = l1.next;
}
if(l2 != null){
l2 = l2.next;
}
2.3 完整代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int jinwei = 0;
ListNode head = null;
ListNode next = null;
while(l1 != null || l2 != null){
int a1 , a2;
if(l1 != null){
a1 = l1.val;
}else {
a1 = 0;
}
if(l2 != null){
a2 = l2.val;
}else {
a2 = 0;
}
int sum = a1 + a2 + jinwei;
if(head == null){
head = new ListNode(sum % 10);
next = head;
}else {
next.next = new ListNode(sum % 10);
next = next.next;
}
jinwei = sum / 10;
if(l1 != null){
l1 = l1.next;
}
if(l2 != null){
l2 = l2.next;
}
}
if(jinwei > 0){
next.next = new ListNode(jinwei);
}
return head;
}
}
2.4 运行结果
???? 类似题目推荐:
1.数据结构基础
2.算法专项练习
3.剑指offer专项练习
4.推荐一个学习网站:LeetCode,算法的提升在于日积月累,只有每天练习才能保持良好的状态
如果文章对各位大佬有帮助就支持一下噢,新手尝试,不好的地方请各位大佬多多指教!
最后
以上就是积极星星为你收集整理的『LeetCode|每日一题』---->链表求和1.每日一句2.作者简介『LeetCode|每日一题』链表求和的全部内容,希望文章能够帮你解决『LeetCode|每日一题』---->链表求和1.每日一句2.作者简介『LeetCode|每日一题』链表求和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复