当前位置:网站首页>[LeetCode—Question 2 Sum of Two Numbers Detailed Code Explanation ] The source code is attached, which can be copied directly
[LeetCode—Question 2 Sum of Two Numbers Detailed Code Explanation ] The source code is attached, which can be copied directly
2022-08-03 10:53:00 【DJL_new_life】
(点击跳转即可哦)
有关于链表的学习哦
LeetCode_2.两数相加
题目:
给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字.
请你将两个数相加,并以相同形式返回一个表示和的链表.
你可以假设除了数字 0 之外,这两个数都不会以 0 开头.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零
示例:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
思路:
在 l1这个链表上进行相加,当节点的数字大于9时,就向下一个节点位置的值加1,若相加后的节点数字小于等于9,直接进行下一个节点的相加,一直循环.
当走到l1的最后一个节点,并且l2没有走到最后一个节点,就将l2剩下的节点都连接到l1的后面,此时就要判断 若在 l1的最后一个节点位置相加后的数大于 9,就需要进1,后面的数是l1继承l2的,就直接判断后面的数是否大于9,要不要进1.
全部代码:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//拷贝一下l1 头节点的地址,
ListNode one = l1;
//拷贝一下l2 的头节点
ListNode two = l2;
//当两个链表都还存在节点时,进入循环开始相加,题目描述链表至少有一个节点
while (one != null && two != null){
//在l1这个链表上进行相加
one.val = one.val+ two.val;
//若相加的值大于9,就需要向下一位进1
if(one.val > 9){
//只保留个位数,
one.val = one.val % 10;
//此时 one和two 都走完了,但是还需要进1,然后直接返回l1
if(one.next == null && two.next == null){
one.next = new ListNode(1);
return l1;
}
//此时one走到了最后一位,two还没有走到最后一位.
if(one.next == null){
//就把剩下的数直接加到one 的后面,保证l1的长度永远比two长
one.next = two.next;
//断开two 与后面的联系
two.next = null;
}
//one的下一位 加1
one.next.val += 1;
}else {
// 相加后的val没有大于9,
//若one的下一位为空,则连接two 后面的值.
if(one.next == null){
one.next = two.next;
//断开two后面的联系
two.next = null;
}
}
//同时向后走一个单位,代表个位,十位,百位 对应相加
one = one.next;
two = two.next;
}
//是对 one走到最后一个数,在one 后面直接添加了two 后面的节点的补充.
//此时two为null,并且此时one的值 大于9
while (two == null && one != null){
if(one.val > 9){
one.val = one.val % 10;
//需要向下一位进1,若此时one.next == null,就需要创建一个新的空节点,
// 保证one.next不为null
if(one.next == null){
one.next = new ListNode();
}
//进1
one.next.val += 1;
}
//继续判断下一位数 是否大于9
one = one.next;
}
return l1;
}
要是对大家有所帮助的话,请帮我点个赞吧.
边栏推荐
- Regulation action for one hundred days during the summer, more than 700 traffic safety hidden dangers were thrown out
- 如何将Oracle/MySQL中的数据迁移到GBase 8c中?
- How to make self-introduction
- Analysis of the idea of the complete knapsack problem
- Interview Blitz 71: What's the difference between GET and POST?
- Guys, I have a problem: My source mysql has a table that has been writing to, I use mysql cdc connec
- C#+WPF 单元测试项目类高级程序员必知必会
- Leecode-SQL 1484. 按日期分组销售产品
- 鸿蒙第四次
- 【冒泡排序以及奇数偶数排列】
猜你喜欢

How to retrieve IDC research reports?

一文了解,从RS485传感器到物联网关到云平台过程

如何通过DBeaver 连接 TDengine?

玉溪卷烟厂通过正确选择时序数据库 轻松应对超万亿行数据

科普大佬说 | 黑客帝国与6G有什么关系?

如何检索IDC研究报告?

聊天app开发——防炸麦以及节省成本的内容鉴定方法

MySQL数据库实战(1)

被审稿人吐槽没有novelty!深度学习方向怎么找创新点?

This article understands the process from RS485 sensor to IoT gateway to cloud platform
随机推荐
complete knapsack problem
What is the relationship between The Matrix and 6G?
How to make self-introduction
synchronized
3分钟实现内网穿透(基于ngrok实现)
【文件IO的简单实现】
【JDBC以及内部类的讲解】
自定义实现乘风破浪的小船
With strong network, China mobile to calculate excitation surging energy network construction
什么是IDE?新手用哪个IDE比较好?
_GLIBCXX_USE_CXX11_ABI 宏的作用
优炫数据库在linux平台下服务启动失败的原因
Spinner文字显示不全解决办法
509. 斐波那契数
Matplotlib
Mysql OCP 72 questions
Pixel mobile phone system
Leecode-SQL 1667. 修复表中的名字
MATLAB程序设计与应用 2.6 字符串
如何通过DBeaver 连接 TDengine?