力扣#2 两数相加(难度:中等)

leetcode hot100 中等难度 day03-刷题 阅读详情

题目:

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

 

解题思路:

此题旨在让我们模拟实现两数相加的过程,输入的两个链表为两个数字的逆序存储链表,输出的链表为两数相加的逆序存储链表。

由于测试用例会出现,如下用例:

因此不能用long类型对两数进行相加,只能将两个链表对应位置的元素与进位依次相加,求得最终链表。

注意:

1. 循环中,需要对新建的链表的head引用进行判空,如果为空,应先创建头结点,不为空再进行尾添加,否则会造成空指针异常。

2. 循环结束,切记对进位进行处理,如果进位大于0,进行尾添加。

代码示例:

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode p1 = l1, p2 = l2, head = null, p3 = null;
        int add = 0;
        while(p1 != null || p2 != null) {
            int n1 = p1 != null ? p1.val : 0;
            int n2 = p2 != null ? p2.val : 0;
            int sum = n1 + n2 + add;
            if (head == null)
                p3 = head = new ListNode(sum % 10, null);
            else {
                p3.next = new ListNode(sum % 10, null);
                p3 = p3.next;
            }
            add = sum / 10;
            if (p1 != null) p1 = p1.next;
            if (p2 != null) p2 = p2.next;
        }
        if (add > 0) p3.next = new ListNode(add, null);
        return head;
    }
}

 

445. 两数相加 II 这道题关键在于处理高位在前的链表加法。链表反转 + 头插构建结果链表是最直接且易实现的方式。对于追求空间效率或输入不能修改的场景,可以考虑栈或递归做法作为进阶练习。 阅读详情

相关推荐

LeetCode 每日一题 #2:两数相加(Add Two Numbers)|Python 链表实战详解

LeetCode 已内置,本地调试需自行定义。

张三的博客 1221

力扣记录:贪心算法2中等(1)序列问题——376 摆动序列,738 单调递增的数字

力扣记录:贪心算法2中等(1)序列问题——376 摆动序列,738 单调递增的数字

Kiwi_fruit的博客 282

Java两数相加

关于用Java实现两数相加的功能: public class ww extends javax.swing.JApplet { /** Initializes the applet ww */ public void init() { try { java.awt.EventQueue.invokeAndWait(new Runnable() { public void run() { initComponents(); } }); } catch (Exception ex) { ex.printStackTrace(); } }

力扣(LeetCode)试题--两数相加

两数相加( Add Two Numbers) 题目描述 中文描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -&g...

console的博客 241

H2O到OmniH2O细节解读,人形机器人遥操作的技术演进与哲学

摘要:CMU何泰然团队相继发表的H2O和OmniH2O论文为人形机器人遥操作领域带来突破。H2O首创Sim-to-Data方法,通过形态/动作重定向和特权筛选处理人类动作数据,PPO算法实现基础控制。OmniH2O改进为教师-学生蒸馏框架,采用DAgger算法增强泛化能力,并消除对线速度输入的依赖。这两项工作从概念验证到工程落地,建立了一套完整的动作学习范式,为具身智能研究提供了重要参考。

CyanNoah的博客 1387

深入博通PEX89000内部:那颗ARM CPU和Synthetic Mode到底能玩出什么花样?

本文深入解析博通PEX89000系列PCIe交换芯片内置的ARM CPU与Synthetic Mode技术,揭示其在AI计算和数据中心的智能潜能。通过ARM Cortex CPU的实时控制和Synthetic Mode的自治网络功能,PEX89000实现了GPU集群的动态拓扑重组和资源池化,大幅提升AI训练效率。文章还探讨了该技术在软件定义数据平面和弹性AI架构中的创新应用。

weixin_30776273的博客 209

【力扣算法】2-两数相加

题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -&g...

ZeromaXHe的博客 522

matebookego win11 arm 系统安装安卓子系统

一般的x86电脑如果安装android子系统,运行安卓子系统,由于要将android arm代码转译为x86代码,所以效率不一定高,但是如果电脑是arm架构的,通过安卓子系统运行android的程序执行效率就会 高不少,本文参考,都是在win11 home版本下的。两者跑分在cpu上差不太多了,大约是枭龙855的水平了,这个水平的子系统就有一定的实用性了,玩个一般游戏,刷个抖音都很流畅的。启动子系统后,点击左上角的设置,启用 “开发人员模式”。然后就可以再通运运行华为应用商店来进行安装其它应用了。

babytiger的专栏 1万+

力扣算法题2:两数相加

题目 解答 我的解答 思路 思考良久,根据正常的两数相加的习惯,逆序存储的数字其实反而更加适合用来做计算,因为你可以从链表的第一个就开始遍历,无需再从后拿个十百千位进行同位相加,所以简单来说就是循环两个数的链表,对同一个位置的数进行相加,如果超过10,则需要进位。 思路是这样没错,可一到实现层面,就懵叉叉了?为什么呢,链表的结构在代码解答的提示中给出了,如下: /** * Definition for singly-linked list. * public class ListNode

专注分享个人所得,希望给大家带来帮助 350

黑猫带你学UFS协议第1篇:全网最全UFS协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

本文由黑猫学长撰写,深入解析UFS协议,覆盖从基础概念到高级特性的全方位教程。适合存储芯片行业从业者和嵌入式开发者,旨在帮助读者快速掌握UFS协议,适用于高端智能手机、平板等智能设备。预计15万字,涵盖UFS 3.1协议,讲解UFS协议栈、物理层、链路层、传输层等内容。

黑猫奥利奥的博客 3690

告别手动查文献!用Claude Haiku 4.5一键帮你检索+插入参考文献,科研效率直接翻倍(附实操演示+AI提示词)

以下是我的论文段落内容与参考文献列表。以下是我论文段落内容【粘贴论文段落】,请根据每个段落的主题自动检索近五年内的高相关学术文献(以真实DOI或可查询来源为准),要求:1)为每个段落匹配2–3条最相关的文献;另一种是你没有现成的文献列表,需要AI能够帮你检索,筛选输出合适的参考文献列表,并将其正确插入至段落中。选择完成后,先让它检索文献,我设计了一段AI提示词,让Haiku 4.5模型围绕研究主题,给我在各大数据库搜索近五年的文献,并以表格的形式输出文献的核心信息,确保DOI号能直接跳转到原文。

qq_64378896的博客 407

力扣LeetCode2.两数相加及Python源码实现

本题为LeetCode题库中第2两数相加,难度中等,题目请参考这里。 比较绕的一道题,谈论区的python答案不多而且思路没有讲清楚,这里记录一下。 给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数...

Alex__Mahone的专栏 794

CDR插件开发之CPG插件004 - 认识VGCore并编译生成你的第一个CPG文件

上篇文章中,讲到了使用VS2019编译CDR类型库 VGCoreAuto.tlb,编译后得到了vgcoreauto.tlh和vgcoreauto.tli两个文件。本文将对这两个文件说明,并演示通过标准的libid形式来导入CDR类型库,在这个过程中,穿插一些VS2019的使用技巧(删除目录、复制工程、打开项目或解决方案、修改解决方案名称、修改项目名称等),使读者循序渐进,逐步提高对VS2019工具的熟练程度,最后通过修改项目属性配置,生成第一个CPG文件。

Zebe 2984

No.2两数相加(leetcode中等)

给你两个的链表,表示两个非负的整数。它们每位数字都是按照的方式存储的,并且每个节点只能存储数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

hyk15543的博客 402

[QMT和ptrade量化交易小白入门]-109、小市值选股的基础上用六脉神剑评分,回测年化可到132%

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1859

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode 中等难度题

LeetCode 中等难度题2、两数相加3、无重复字符的最长子串 2、两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [0], l2 = [0] 输出

qq_41772794的博客 1271

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

leetcode2——两数相加(中等)

leetcode2——两数相加(中等) 题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 ->...

dedell的博客 202

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

[leetcode-python]2.两数相加(难度:中等)

享受过程思路介绍代码实现注!!! 思路介绍 我的想法是,先将两个链表表达为两个数,再让他们相加,最后将结果也变成链表 可能有点麻烦,但能力有限,摊手手 如果各位大佬有什么更好的解法,烦请告知本菜鸡 代码实现 # 得到两个链表所对应的数 n1 = n2 = 0 c1 = c2 = 0 while l1 or l2: n1 += l1.val * pow(10, c1) if l1 else 0 n2 += l2.val * pow(10, c2) if l2 else 0 c1 +

lhys666的博客 251

[中等难度]两数相加

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ...

ruankun521的博客 131

LEETCODE的第二题——两数相加(链表)

本文主要用于记录刷力扣的题解,因为自己算法太菜,所以想通过深度学习力扣的每一道题目的原理来提高自己。下面内容为自己学习时的记录,如有错误,欢迎指正🍭。

everything is possible,anything is OK. 732

LeetCode刷题笔记(Python3)——2. 两数相加(难度:中等)(2021-05-10)

没有抓紧时间完成,一直拖到凌晨才搞定。以后要提前完成。 LeetCode刷题笔记(Python3)——2. 两数相加(2021-05-10) (点击查看题目) (点击查看官方题解) 官方题解中这次没有直接给出可粘贴使用的Python代码,但官方的题解视频中使用的就是Python代码,可以参考。 LeetCode刷题笔记(Python3)——2. 两数相加初始解法优化解法:1. Python的特殊赋值方法2. Python中None的真假3. Python运算符4. 过长代码行的换行简短解法:5. 条.

AbaloneVH的博客 582

Leetcode题2、两数相加(Python题解)

问题: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 题目来源:力扣(LeetCode) 链接:https://le

AI414010的博客 427

Leetcode 中等:2. 两数相加

模仿我们小学时代学的加法运算。个位相加超过十进一,十位相加有进位则加上进位,依次类推。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。

老马的程序人生 280

【leetcode系列】【算法】【中等】两数相加

题目: 解题思路: 虽然是个中等难度的,但是其实没太想明白难点在哪里 同时遍历两个链表,记录下是否需要进位,然后继续遍历就好了 代码实现: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # ...

songyuwen0808的博客 139
下一篇: 力扣#5 最长回文子串 (难度:中等)
nlp87v5
博客等级 码龄5年 3粉丝 37原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值