【反转链表】力扣 445. 两数相加 II

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

一、题目

在这里插入图片描述

二、思路

  • 与 力扣 2. 两数相加 的差别就在于现在这两个非负整数并不是 逆序 存储的,因此需要在力扣 2. 两数相加 的基础上首先进行反转链表(见 力扣206.反转链表)
    • 加法运算是从低位开始,向高位进位,因此需要将两个链表进行反转,再进行对齐后的相加操作。

三、题解

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode ans;
        l1 = reverseList(l1);
        l2 = reverseList(l2);
       return reverseList(addTwo(l1, l2, 0));
    }
    // 反转链表
    public ListNode reverseList(ListNode head) {
        ListNode pre = null, cur = head;
        while (cur != null) {
            ListNode tmp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;
    }
    // 求解两数之和 
    public ListNode addTwo(ListNode l1, ListNode l2, int carry) {
        // 递归出口
        if (l1 == null && l2 == null) {
            return carry != 0 ? new ListNode(carry) : null;
        }
        // 确保 l1 是较长的
        if (l1 == null) {
            l1 = l2;
            l2 = null;
        }
        int sum = l1.val + (l2 != null ? l2.val : 0) + carry;
        l1.val = sum % 10;
        l1.next = addTwo(l1.next, l2 != null ? l2.next : null, sum / 10);
        return l1;
    }
}
CMOS锁相环核心:四种鉴频鉴相器(PFD)结构深度剖析与选型指南 本文深入剖析了CMOS锁相环中四种鉴频鉴相器(PFD)的结构与性能,包括传统RS触发器型、非时钟型、预充电型和边沿触发型PFD。通过详细的电路分析、实测数据和工程案例,提供了PFD选型的实用指南,帮助工程师根据速度、功耗和精度需求选择最优方案,提升锁相环设计效率。 阅读详情

相关推荐

SystemVerilog新手实战指南:iverilog与VScode的完美组合

本文为SystemVerilog新手提供了一套高效入门方案,详细介绍了如何利用开源编译器iverilog与轻量编辑器VScode搭建学习环境。内容涵盖十分钟快速安装配置、首个工程从编码到查看波形的完整流程,并演示了动态数组和队列等SystemVerilog新特性的使用,旨在帮助初学者避开复杂商业工具,快速掌握数字电路设计与验证的核心技能。

f6g7h8i9j的博客 513

Leetcode 面试题24. 反转链表& Leetcode 2. 两数相加&Leetcode 445. 两数相加 II【链表实操】

文章目录Leetcode 面试题24. 反转链表问题描述解题报告实现代码参考资料Leetcode 2. 两数相加问题描述解题报告实现代码参考资料Leetcode 445. 两数相加 II问题描述解题报告实现代码参考资料 Leetcode 面试题24. 反转链表 问题描述 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 解题报告 略。 实现代码 /** * Definit...

MD 533

告别谷歌翻译失效!手把手教你用Immersive Translate插件实现双语网页阅读(附Chrome/Edge/Firefox保姆级配置)

本文详细介绍了如何使用Immersive Translate插件实现双语网页阅读,解决谷歌翻译失效的问题。通过Chrome、Edge和Firefox的保姆级配置指南,帮助用户轻松安装和使用这款支持双语对照、智能识别网页内容的翻译插件,提升外文资料阅读效率。

weixin_28683689的博客 485

LeetCode 445两数相加II

LeetCode 445两数相加IIMedium 题目简述:给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。 输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 8 -> 0 -> 7 思路:反转链表后从低位到高位依次相加,最后再反转新求和链表并返回结果 /** * Defi

XBlog 191

dify案例-基于Dify打造智能合同审查助手:零代码搭建工作流全指南

Dify的工作流(Workflow)功能是一个可视化流程编排工具,允许用户通过拖拽节点的方式构建复杂的AI应用。与简单的问答应用不同,工作流支持多步骤任务处理、条件分支、并行执行等高级功能,非常适合合同审查这类结构化任务。可视化编排:无需编写代码,通过拖拽连接节点即可构建复杂流程多模型协作:可在不同节点使用最适合的AI模型灵活集成:支持知识库检索、条件判断、API调用等多种节点类型迭代优化:可随时测试和调整单个节点,不影响整体流程可视化搭建:无需编码经验,拖拽式构建复杂审查流程灵活扩展。

weixin_44245188的博客 1939

别再只设接触压力了!用ANSYS Workbench模拟O型圈密封泄漏的完整流程

本文详细介绍了在ANSYS Workbench中模拟O型圈密封泄漏的完整流程,重点解析了流体渗透压力载荷的设置与应用。通过双物理场耦合模型和精确的参数配置,帮助工程师准确评估密封性能,避免传统方法仅考虑接触压力的局限性。文章还提供了常见问题的解决方案和工程实践建议,提升密封设计的可靠性。

weixin_30372371的博客 399

ContextMenuManager:Windows 右键菜单管理,隐藏、新建、排序一次搞定

ContextMenuManager 是一款免费、免安装的 Windows 右键菜单管理工具,绿色便携,双击主程序就能跑。它直接替你操作注册表,你不用碰一行注册表编辑器,专门给不想折腾系统的新手用。 [![ContextMenuManager 右键菜单管理中文主界面](https://raw.gitcode.com/gh_mirrors/co/ContextMenuManager/raw/555

gitblog_00406的博客 375

【网络安全】AntSword蚁剑新手快速入门(附实战案例)

蚁剑(AntSword)是一款开源的跨平台WebShell管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。蚁剑的特点主要有如下几点:1.支持多平台。包括macOS、Linux 32位、Linux 64位、Linux armv7l、Linux arm64、Windows 32位、Windows 64位。2.完善的文档。中国蚁剑文档地址。3.多项功能。文件管理功能、虚拟终端功能、数据库管理功能。4.内置代理功能。

等风来 1万+

【LeetCode: 445. 两数相加 II + 链表】

【LeetCode: 445. 两数相加 II + 链表】给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。

Coder_ljw的博客 1081

【行业解决方案篇十五】【DeepSeek物流优化:车辆路径规划算法】

写完这篇技术解析,突然想起那位多绕150公里的王师傅——现在他的车载平板会实时显示"路径健康度",当偏离最优路线超过5%就自动报警。从节约算法到深度强化学习,从三维装载到时序预测,这些技术最终化作每辆货车少烧的1升柴油,每个快递小哥早回家的1小时。最后说个浪漫的事:系统曾为某偏远山区规划出一条穿越枫叶林的配送路线,不仅节省23公里,还成了网红打卡路线。原来物流优化的尽头,不仅是冰冷的数学,还有人间烟火气的温度。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 292

Android开发工程师(IOT)面试指南与参考答案

【摘要】绿联科技招聘Android开发工程师(IOT方向),要求5年以上Android开发经验,精通Kotlin/Java,熟悉IOT设备交互及跨平台开发。岗位职责包括客户端开发维护、技术调研及性能优化等。核心考察点包括:Kotlin协程在IOT低功耗场景的应用、多协议设备连接层设计、音视频性能优化及离线架构实现。重点技术涉及蓝牙Mesh群控、BLE功耗优化及ReactNative混合开发。需具备GooglePlay合规经验,熟悉Android13+权限管理,并能提供量化性能优化案例。

郑伟强dev的专栏 722

LeetCode 分类刷题:445. 两数相加 II

该题解通过反转链表实现高位在前的两数相加。先将两个链表反转,从低位开始逐位相加并处理进位,最后再将结果链表反转恢复高位顺序。使用哨兵节点简化操作,时间复杂度O(n),空间复杂度O(1)。核心步骤包括:反转链表、按位相加处理进位、再次反转结果链表。

flashlight_hi的博客 445

I2C通信——时序图

本文用逻辑分析仪抓取主机I2C通信的时序图,抓取的过程是读某个寄存器的值。

weixin_43772611的博客 7353

【LeetCode】445. 两数相加 II (js实现)

1、题目:445. 两数相加 II - 力扣(LeetCode) (leetcode-cn.com) 2、实现 (1)思路: 将链表都转换为堆栈 将堆栈的栈顶元素进行相加,同时保存进位 将每一次相加的结果对10取余作为新节点,以头插法插入新链表,将每一次相加结果的商的下取整作为进位。 判断最后一次相加的进位是否为0,如果不为零,还要将进位插入链表头部 最后返回新链表 (2)代码 /** * Definition for singly-linked list. * function Li

在热爱技术的路上一直前行。 383

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

4.14周二

做题 今天做了一个两数相加II,力扣445:给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 8 -> 0 -> 7 这...

EnonLay的博客 124

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【链表】力扣 2816. 翻倍以链表形式表示的数字

由于链表存储数值采取的不是逆序的,与我们正常进行运算的顺序是相反的。但是根据本题中多出的先验知识,我们可以来避免进行的步骤。根据上述表格可知,当节点的数值时才会有进位。因此,在不反转链表的情况下,只需要判断下一个节点的值与 4 的关系就可以确定当前节点是否要加进位 1。特别地,当头结点的数值大于 4 时,需要新创建一个节点来存储翻倍后进位产生的数值。

J_pluto的博客 579

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

[HOT 100] 0445. 两数相加 ii

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。,返回高位在前的链表结果。

人生需要动态规划 学习需要贪心算法 439

算法---LeetCode 445. 两数相加 II

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例1:输入:l1 = [7,2,4,3], l2 = [5,6,4]输出:[7,8,0,7]示例2:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[8,0,7]示例3:输入:l1 = [0], l2 = [0]输出:[0]提示:链表的长度范围为 [1, 100]

知北行的博客 227

leetcode - 445. 两数相加 II

leetcode - 445. 两数相加 II

qq_42250642的博客 227

力扣hot100_链表(2)_python版本

本文介绍了五个链表相关问题的解法。首先,141题和142题分别使用快慢指针判断链表是否有环以及找到环的入口。21题通过暴力求解合并两个有序链表。2题和445题则分别处理了链表表示的两数相加问题,其中445题需要先反转链表再进行相加操作。每个问题都提供了相应的Python代码实现,展示了如何通过指针操作和哨兵节点来简化链表问题的处理。

Y1n的博客 274

ARTS打卡第六周

Algorithm: Leetcode 445. 两数相加 II 题目描述: You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first and each of their nodes contain a single ...

小虾米的专栏 349

445. Add Two Numbers II**

445. Add Two Numbers II** https://leetcode.com/problems/add-two-numbers-ii/ 题目描述 You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first...

珍妮的选择的博客 345

算法通关村第2关|链表反转的拓展问题|Leetcode 92. 反转链表 II(头插法+穿针引线法讲解) 24. 两两交换链表中的节点 369.单链表+1 445. 两数相加 II

给你单链表的头指针head和两个整数left和right,其中。请你反转从位置left到位置right的链表节点,返回。

qq_45955642的博客 145

两数相加 II(leetcode 445)python题解

和leetcode第二题差不多,先把l1,l2反转链表之后相加然后再反转链表时间复杂度:空间复杂度:

weixin_56600336的博客 1026

leetcode 445. 两数相加 II(翻转链表的使用)

题目描述 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入:l1 = [7,2,4,3], l2 = [5,6,4] 输出:[7,8,0,7] 示例2: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[8,0,7] 示例3: 输入:l1 = [0], l2 = [0] 输出:[0] 首先翻转两个链表,然后按照整数相加的规则从最低位开始遍

yangyangcome的博客 177

leetcode 445. 两数相加 II

leetcode 445. 两数相加 II 题目详情 题目链接 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 进阶: 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。 示例: 输入:(7 -> 2 -> 4 -&gt...

qq_33789406的博客 719
上一篇: 【链表】力扣 2. 两数相加
下一篇: 【链表】力扣 2816. 翻倍以链表形式表示的数字
JZihui
博客等级 码龄6年 170粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值