【反转链表】力扣 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;
    }
}
AutoSAR开发实战:如何用Matlab/Simulink从零搭建SWC组件(附完整代码示例) 本文详细介绍了使用Matlab/Simulink从零开发AutoSAR SWC组件的全流程,包括环境配置、ARXML文件导入、算法模型开发、代码生成与集成验证等关键步骤。通过实战案例和完整代码示例,帮助开发者掌握AutoSAR标准下的软件开发技术,提升汽车电子系统的开发效率。 阅读详情

相关推荐

NAO V6 开发环境的配置(附所有文件)

NAO V6开发环境配置前言环境Robot SettingsChoregraphe 2.8.5.10python2.7+naoqi2.8+opencv4.1.0putty与FileZilla 前言 学校的机器人摸索了一段时间,之前摸爬滚打探索环境,之前没接触这类机器人可能会非常艰辛,希望能给需要的人一些帮助。Nao与pepper通用 环境 win10(x64)+naoqi2.8 1、Robot S...

wbhhello的博客 3219

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

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

MD 533

PRIDE数据库20年:2025更新

PRoteomics IDEntifications (PRIDE)数据库(https://www.ebi.ac.uk/pride/)是全球领先的基于质谱(MS)的蛋白质组学数据存储库,也是ProteomeXchange联盟的创始成员之一。本文总结了过去3年中PRIDE资源及相关工具的发展情况。提交到PRIDE存档的数据集数量平均每月达到约534个。主要得益于基础设施的持续改进,如用于超大数据集的新文件传输协议(Globus)、新的数据重新提交流程以及自动数据集验证过程。

多组・学・多组学 2062

LeetCode 445两数相加II

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

XBlog 191

nCode:GlyphWorks案例教程一

nCode GlyphWorks案例一Comparing Frequency Content of Two Different Tests案例文件目标配置选择数据 Comparing Frequency Content of Two Different Tests 在本案例中,我们将比较来自两个不同测试的六个加速计通道的频率内容。将三轴加速度计放置在车辆的左前角和右前角,然后分别在两个不同的试验路面上行驶12分钟以上。 案例文件 此案例的文件(采用nCode DAC格式)位于nCode安装目录下的\demo

追月行的博客 1万+

麒麟和UOS系统编写桌面点击可执行文件

在桌面上创建一个快捷方式(.desktop 文件)来运行脚本。打开文本编辑器,创建一个新文件,如。这可以通过文本编辑器来完成。首先,确保您的脚本具有执行权限。现在,您应该可以双击桌面上的。保存此文件到桌面目录,例如,在桌面上创建一个快捷方式(文件来运行您的脚本了。使用图形界面或命令行给。现在您可以双击桌面上的。为您脚本的实际路径。是您脚本的实际路径。文件来运行您的脚本了。

u013934107的博客 7246

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

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

gitblog_00406的博客 375

UFS 功能描述:UFS boot

UFS 启动过程介绍:启动配置,启动代码下载过程和安全性

m0_51720747的博客 1601

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

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

Coder_ljw的博客 1081

OpenHarmony WiFi子系统全解析:从架构到代码实现(大合集)

头文件路径[相对路径][相对路径][相对路径][相对路径]// 网络配置结构 (wifi_device_config.h)// SSID字符串// 预共享密钥// 安全类型// 网络ID// 优先级// 是否隐藏网络// 扫描信息结构 (wifi_scan_info.h)// SSID// BSSID (MAC地址)// 安全类型int rssi;// 信号强度// 频率// 信道宽度// 时间戳// 连接信息结构 (wifi_linked_info.h)

m0_67505153的博客 1059

OpenAI Error: 403 Country, region, or territory not supported [Python]

从OpenAI的API服务中获取数据时,由于你所在的国家、地区或领土不被支持,因此请求被拒绝了

suiusoar 5664

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

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

flashlight_hi的博客 445

ComfyUI 汉化教程(中文界面)

如果你对翻译的结果不满意,还可以进行修改。首先,进入目录,可以看到该目录中有很多 JSON 文件:打开 JSON 文件,找到要修改的内容,修改对应的Value值即可:最后,重启 ComfyUI 即可。

水滴的博客 1万+

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

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

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

4.14周二

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

EnonLay的博客 124

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

J_pluto的博客 579

[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

反转链表学习笔记(二):K 个一组翻转链表,两数相加 II,翻倍以链表形式表示的数字

ps:笔记和代码按本人理解整理,重思路

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值