Java如何实现两数相加
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要为大家展示了"Java如何实现两数相加",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java如何实现两数相加"这篇文章吧。题目描述给出两个 非
千家信息网最后更新 2025年02月04日Java如何实现两数相加
这篇文章主要为大家展示了"Java如何实现两数相加",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java如何实现两数相加"这篇文章吧。
题目描述
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0
之外,这两个数都不会以 0
开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807
解题方案
思路
标签:链表
将两个链表看成是相同长度的进行遍历,如果一个链表较短则在前面补0,比如
987 + 23 = 987 + 023 = 1010
每一位计算的同时需要考虑上一位的进位问题,而当前位计算结束后同样需要更新进位值
如果两个链表全部遍历完毕后,进位值为1,则在新链表最前方添加节点1
小技巧:对于链表问题,返回结果为头结点时,通常需要先初始化一个预先指针pre,该指针的下一个节点指向真正的头结点head。使用预先指针的目的在于链表初始化时无可用节点值,而且链表构造过程需要指针移动,进而会导致头指针丢失,无法返回结果。
代码
/**
* 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) {
ListNode pre = new ListNode(0);
ListNode cur = pre;
int carry = 0;
while(l1 != null || l2 != null) {
int x = l1 == null ? 0 : l1.val;
int y = l2 == null ? 0 : l2.val;
int sum = x + y + carry;
carry = sum / 10;
sum = sum % 10;
cur.next = new ListNode(sum);
cur = cur.next;
if(l1 != null)
l1 = l1.next;
if(l2 != null)
l2 = l2.next;
}
if(carry == 1) {
cur.next = new ListNode(carry);
}
return pre.next;
}
}
画解
以上是"Java如何实现两数相加"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
两个
指针
节点
内容
篇文章
数字
结果
结点
问题
存储
学习
帮助
相同
代码
位数
原因
同时
开头
思路
技巧
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
青岛恒丰网络技术有限公司是什么
听网络安全意识学习感想
青浦区网络软件开发质量保证
人工神经网络技术翻译的优点
物流软件开发行业市场情况
得力集团软件开发是干啥的
软件开发流程教学
华为3d眼镜数字媒体服务器
2018网络安全大事件
客户端和服务器数据怎么传输
网络安全日宣传主题
沧州app软件开发工程师
华为5g网络安全指南
湖南学电脑软件开发月薪
云服务器存储速度
华为怎么开定位服务器地址
上睿互联网科技有限公司
网络安全案例故事英语
中国台湾优质软件开发
梦幻西栅老街服务器加钱吗
达丰软件开发部属于哪个部门
郑州中资互联网科技公司
虹口区信息化软件开发经验丰富
数据库常用的安全策略
云课堂网络安全宣传
福建质量网络技术咨询产品
软件开发立项的内容
慈溪手机软件开发有哪些
代理服务器构建
网络安全职高班会照片