Leetcode Add Two Numbers & 两数相加 解题报告

【力扣Leetcode解题系列之0002. 两数之和Add Two Numbers:链表与数学运算的完美结合】 力扣2题"Add Two Numbers"是一道经典的链表加法问题,要求将两个逆序存储数字的链表相加并返回结果链表。解题关键在于模拟十进制加法过程,处理不同长度链表和进位问题。主要有两种解法:循环法和递归法。循环法通过遍历链表逐位相加,处理进位;递归法则通过递归调用处理后续节点和进位。两种方法的时间复杂度均为O(max(M,N)),空间复杂度为O(1)。题目考察了链表操作和数学运算的结合能力,是算法练习的典型范例。 阅读详情
1.问题描述

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

2.测试用例

示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

3.补充说明

每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

4.解题报告
  1. 递归
    /**
     * 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 currentNode = new ListNode();
            int next = 0;
            currentNode = assignListNode(l1, l2, currentNode, next);
            return currentNode;
        }
        
        public ListNode assignListNode(ListNode l1, ListNode l2, ListNode currentNode, int next) {
            if (l1 == null && l2 == null) {
                if (next > 0) {
                    currentNode.val = 1;
                } else {
                    currentNode = null;
                }
                return currentNode;
            }
            int x = l1 == null ? 0 : l1.val;
            int y = l2 == null ? 0 : l2.val;
            int sum = x + y + next;
            currentNode.val = sum % 10;
            currentNode.next = new ListNode();
            currentNode.next = assignListNode(l1 == null ? null : l1.next, l2 == null ? null : l2.next, currentNode.next, sum / 10);
            return currentNode;
        }
    }
    
  2. 内循环
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode dummyHead = new ListNode(0);
        ListNode p = l1, q = l2, curr = dummyHead;
        int carry = 0;
        while (p != null || q != null) {
            int x = (p != null) ? p.val : 0;
            int y = (q != null) ? q.val : 0;
            int sum = carry + x + y;
            carry = sum / 10;
            curr.next = new ListNode(sum % 10);
            curr = curr.next;
            if (p != null) p = p.next;
            if (q != null) q = q.next;
        }
        if (carry > 0) {
            curr.next = new ListNode(carry);
        }
        return dummyHead.next;
    }
    
Leetcode解题之路(golang版):2. 两数相加(Add Two Numbers) 2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -&gt; 4 -&gt; 3) + (5 -&gt; 6 -&gt; 4) 输出:7 -&gt; ... 阅读详情

相关推荐

【深度排查】VScode 远程 SSH 连接失败:从网络握手到服务部署的全链路诊断指南

本文详细解析了VScode远程SSH连接失败的常见原因及解决方案,从基础网络排查到SSH服务配置,再到VScode特有的问题处理。特别针对Ubuntu和TrueNAS系统提供了具体配置建议,帮助开发者快速解决'Could not establish connection'等连接问题,提升远程开发效率。

weixin_30301449的博客 446

LeetCode 2.Add Two Numbers 两数相加 Python3 三种解法

LeetCode 2.Add Two Numbers 两数相加 Python3 由于做提前连链表是怎么实现的都不知道所以补了点课。 Single Linked List 代码来自这位兄台 pasilo https://blog.51cto.com/13047263/2070815 内容理解我看的知乎 如何更好的理解链表 以下代码和LeetCode上面的链表稍微有些许不同,那个里面链表和链表上面的节...

Aixoum is Me 1290

S32DS IDE调试技巧:如何用Attach功能高效定位汽车电子MCU的Bootloader问题

本文详细介绍了在汽车电子MCU开发中,如何利用S32DS IDE的Attach调试模式高效定位Bootloader与应用程序的协同问题。通过对比常规调试与Attach模式的本质差异,并深入讲解工程配置、镜像合并及实战调试流程,帮助开发者在不复位、不重新下载程序的前提下,实时分析系统状态,快速解决内存映射冲突、中断向量表重定向等疑难杂症。

weixin_29168393的博客 268

LeetCode //C - 445. Add Two Numbers II

【代码】LeetCode //C - 445. Add Two Numbers II。

Made in Code 1897

Pico设备手势追踪实战:5步搞定MRTK3手部模型与UI交互配置

本文详细介绍了在Pico设备上使用MRTK3实现手势追踪的5个关键步骤,包括环境配置、手部模型冲突解决、射线交互优化、UI交互配置及性能优化。通过实战案例和代码示例,帮助开发者快速解决MR开发中的常见问题,提升混合现实应用的交互体验。

onion的博客 499

手把手教你用STM32H743+FreeRTOS+LWIP搭建物联网网关(附完整工程)

本文详细介绍了如何使用STM32H743微控制器结合FreeRTOS实时操作系统和LWIP协议栈构建高性能物联网网关。内容涵盖硬件配置、FreeRTOS任务设计、LWIP协议栈优化及物联网协议集成,提供完整工程示例,助力开发者快速实现稳定可靠的网络通信枢纽。

weixin_42623010的博客 502

LeetCode第二题:两数相加(Add Two Numbers)

LeetCode第二题:两数相加 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two num...

三年研究生能改变多少 5220

Coze智能体开发:如何搭建一个生成长文本的工作流

扣子工作流提供了流程定制化的能力,我们可以把长文生成的流程拆分为多个步骤,例如先通过大模型节点生成大纲、再使用循环节点依次扩写各个段落,最后将各个段落组合起来,从而实现长文生成流程。此工作流可适用于学术写作、商业报告、小说创作等多种场景。

王国平的博客 1789

2 Add Two Numbers(两数相加)

LeetCode题库Add Two Numbers(两数相加)解答

iMotherBoard的博客 411

Qt Creator 启动慢、卡顿、无响应 终极解决教程

<think>我们需根据内容生成≤150字的摘要。摘要要涵盖问题、原因、解决方案和效果。注意字数限制。</think>Qt Creator启动慢、卡顿、无响应,主因是配置文件QtCreator.ini膨胀至数十MB(正常<100KB)。删除%APPDATA%\QtProject下的膨胀配置、崩溃备份及qtcreator.db即可,启动从几十秒降至几秒,内存占用恢复正常。辅助优化:关闭有道词典取词、禁用无用插件、调整clangd设置。定期检查配置文件大小,避免多版本共用配置。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 70

KVM — 与 QEMU 和 Libvirt 的关系

目录目录 前言 KVM QEMU KVM 与 QEMU qemu-kvm Libvirt Libvirt 在 OpenStack 中的应用前言如果是刚开始接触虚拟机技术的话, 对上述的概念肯定会有所混淆, 傻傻的分不清. 尤其在看虚拟化技术文档时导致理解能力下降, 所以在开始学习虚拟化技术之前对这些概念有一个整体的认识和清晰的理解, 就显得很有必要了.KVMKVM(Kernel-basedVirtu

烟云的计算 5737

2. Add Two Numbers 两数相加

题目:Add Two Numbers 两数相加 难度:中等 You are given twonon-emptylinked lists representing two non-negative integers. The digits are stored inreverse orderand each of their nodes contain a single digit. ...

qq_21963133的博客 225

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

LeetCode2 两数相加 Add Two Numbers

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

沙码龙 225

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

【LeetCode】2. Add Two Numbers 解题报告

转载请注明出处:http://blog.youkuaiyun.com/crazy1235/article/details/51820937Subject 出处:https://leetcode.com/problems/add-two-numbers/ You are given two linked lists representing two non-negative numbers. The dig

crazy_jack 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【LeetCode】Add Two Numbers 解题报告

【题目】 You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it

跳出温水的青蛙 1万+

Leetcode: 2.Add Two Numbers 两数相加

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

Coding 922

LeetCode 2. 两数相加(Add Two Numbers)

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

墨1024 499

《LeetCode-0002》 两数相加-Add Two Numbers

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

AndroidKt 425

[LeetCode] Add Two Numbers 两数相加 C++完整代码实现

在这里由于两数相加用到的链表的成员函数比较少,没有单独实现链表的头文件和源文件。 单链表节点定义的头文件 #ifndef NODE_H #define NODE_H class Node { public:     Node(int data = 0);     int m_iVal;     Node* next;     void printNode();     void NodeT...

u013983674的博客 1294

LeetCode 2. Add Two Numbers 两数相加 Java 极简

设计思路: - 遍历链表,从低位到高位相加,用 carry 保存进位 - 注意 carry 保存的进位最后等于 1,说明两个数的最高位有进位

有三只土豆 395

LeetCode 2. Add Tow Numbers 两数相加 C#

前言 本文介绍了 LeetCode 第 2 题 , “Add Tow Numbers”, 也就是 “两数相加” 的问题. 本文使用 C# 语言完成题目。 题目 English LeetCode 2. Add Tow Numbers You are given two non-empty linked lists representing two non-negative integers. The...

wf824284257的博客 641

leetcode算法—两数相加 Add Two Numbers

题目 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assume the two numbers do

Andya_net的博客 437

【Leetcode】2. 两数相加(Add Two Numbers)

Leetcode - 2 Add Two Numbers (Medium) 题目描述:使用链表表示两个正整数,返回两正整数相加结果,使用链表表示。 Input: (2 -&gt; 4 -&gt; 3) + (5 -&gt; 6 -&gt; 4) Output: 7 -&gt; 0 -&gt; 8 Explanation: 342 + 465 = 807. public ListNode addT...

厉兵秣码 274

【力扣】2、两数相加

力扣(LeetCode)刷题 【力扣】1、两数之和 【力扣】2、两数相加 文章目录力扣(LeetCode)刷题前言一、题目二、题解1.双指针法2.暴力法3.散列法4.排序查找法总结 前言 &nbsp;&nbsp;&nbsp;&nbsp;最近疫情又开始严重了起来,宅在家里太无聊了,闲着也是闲着,刷刷力扣玩。由于是练习算法,所以我更倾向于用C语言来实现,我对C语言的用法还停留在大学,如果有哪里写的不对的地方也欢迎各位小伙伴提出 一、题目 &nbsp;&nbsp;&nbsp;&nbsp;码云 &nbsp;

一个卑微的java开发 1253

LeetCode—2.两数相加(Add Two Numbers)——分析及代码(C++)

一、题目 二、分析及代码 1. 取出各位数字,依次相加后添加进答案链表 (1)解法 (2)结果 2. 对答案链表写入过程优化 (1)解法 (2)结果 3. 将答案链表直接存储于l1中 (1)解法 (2)结果 4. 直接将输入链表转换为数值求解 (1)解法 (2)结果 5. 系统范例运行测试 (1)解法 (2)结果 三、其他 1. 结构体代码细节

江南土豆的博客 634
上一篇: Clickhosue & ck & ch DB::Exception: Memory limit (total) exceeded
下一篇: Postman 上传 multipartfile
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值