我是靠谱客的博主 积极星星,这篇文章主要介绍『LeetCode|每日一题』---->链表求和1.每日一句2.作者简介『LeetCode|每日一题』链表求和,现在分享给大家,希望可以做个参考。

目录

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 核心代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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 完整代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/** * 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(785)

评论列表共有 0 条评论

立即
投稿
返回
顶部