当前位置:网站首页>【LeetCode—第2题 两数之和 代码详解 】附有源码,可直接复制
【LeetCode—第2题 两数之和 代码详解 】附有源码,可直接复制
2022-08-03 10:49: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;
}
要是对大家有所帮助的话,请帮我点个赞吧。
边栏推荐
- Depth study of 100 cases - convolution neural network (CNN) to realize the clothing image classification
- 完全背包问题的思路解析
- Interview Blitz 71: What's the difference between GET and POST?
- STM32入门开发 介绍SPI总线、读写W25Q64(FLASH)(硬件+模拟时序)
- 【学习笔记之菜Dog学C】通讯录
- Activiti产生的背景和作用
- 程序员架构修炼之道:软件架构基本概念和思维
- Who is more popular for hybrid products, depending on technology or market?
- 成对连接点云分割
- Mysql OCP 75题
猜你喜欢
机器学习概述
谷歌实用插件分享
synchronized
跨域问题的分析
Machine Learning Overview
Skills required to be a good architect: How to draw a system architecture that everyone will love?What's the secret?Come and open this article to see it!...
SAP 电商云 Spartacus UI 的 External Routes 设计明细
创建C UDR时,指定的HANDLESNULLS的作用是什么?
Spinner文字显示不全解决办法
Matplotlib
随机推荐
问下flink -sql 通过cdc抽取数据怎么能更快的抽取数据写到目标端?如何配置?
后台图库上传功能
分布式事务七种解决方案
孙宇晨式“溢价逻辑”:不局限眼前,为全人类的“星辰大海”大胆下注
开源一夏 | 教你快速实现“基于Docker快速构建基于Prometheus的MySQL监控系统”
程序员架构修炼之道:软件架构基本概念和思维
微信多开批处理(自动获取安装路径)
鸿蒙第四次
507. 完美数
在 Chrome 开发者工具里通过 network 选项模拟网站的离线访问模式
MATLAB程序设计与应用 2.6 字符串
Enter the SQL Client to create the table, in another node into the SQL Client queries
金先生谈长效生长激素出海与产品力
完全背包问题的思路解析
synchronized
QT with OpenGL(HDR)
BPMN和DMN基本概念和使用案例
VL53L0X V2激光测距传感器 采集距离数据串口输出
请问应该用什么关键字将内容主题设置为 dark 呢
GBase 8c与openGauss是什么关系?