2.两数相加

news2024/11/17 3:07:41

正在建设中 

传送门: https://leetcode.cn/problems/add-two-numbers/

题目描述 

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

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

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

示例 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]


题解

迭代

迭代法本质上是模拟求和运算时的步骤,即逐位求和,记录进位。

1.以输入:l1 = [2,4,3],l2 = [5,6,4]为例,创建一个用于返回结果的连表res和,用于记录进位且初始值为0的变量carry,;

2.利用循环实现l1和l2间的逐位(节点)求和,该循环继续的条件为l1和l2不同时为空;

3.每次循环开始时,创建两个变量(x,y)分别存储连表l1,l2中节点的值并判断节点是否为空,若为空则赋值为0,否则等于节点中所存储的值,之后将两个变量及进位carry作为加数,计算三者间的和(x+y+carry);

4.完成后,

递归 

 ​​​​​​

代码实现  

C++ 

迭代:

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* res=new ListNode();
        ListNode* curr=res;
        int carry=0;
        while(l1||l2){
            int x=l1?l1->val:0;
            int y=l2?l2->val:0;
            int sum=x+y+carry;

            curr->next=new ListNode(sum%10);
            curr=curr->next;
            carry=sum/10;

            if(l1) l1=l1->next;
            if(l2) l2=l2->next;
        }
        if(carry!=0) curr->next=new ListNode(carry);
        return res->next;
    }
};

递归: 

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        if(!l1) return l2;
        if(!l2) return l1;
        int sum = l1->val + l2->val;
        ListNode* res = new ListNode(sum % 10);
        res->next = addTwoNumbers(l1->next, l2->next);
        if(sum > 9) res->next =addTwoNumbers(res->next, new ListNode(1));
        return res;
    }
};

C#

迭代: 

public class Solution {
    public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
        ListNode res=new ListNode();
        ListNode curr=res;
        int carry=0;
        while(l1!=null||l2!=null){
            int x=l1!=null?l1.val:0;
            int y=l2!=null?l2.val:0;
            int sum=x+y+carry;

            curr.next=new ListNode(sum%10);
            curr=curr.next;
            carry=sum/10;

            if(l1!=null) l1=l1.next;
            if(l2!=null) l2=l2.next;
        }
        if(carry!=0) curr.next=new ListNode(carry);
        return res.next;
    }
}

递归: 

public class Solution {
    public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
        if(l1 == null) return l2;
        if(l2 == null) return l1;
        int sum = l1.val + l2.val;
        ListNode res = new ListNode(sum % 10);
        res.next = AddTwoNumbers(l1.next, l2.next);
        if(sum > 9) res.next = AddTwoNumbers(res.next, new ListNode(1));
        return res;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git 进阶系列教程-------git使用流程

GIT使用流程 前言 初衷 git是一门很容易入门的项目管理工具,但是它是一门很难精通的技术。 git pull/git add ./git commit -m "message"/git push/......知道以上几个命令,或许再多一点,也许就能说:‘我会git’了。…

IDEA画UML类图

第一步(IDEA下载画图插件) PlantUML Integration 插件可以支持画图 第二步(创建类图文件) 点击之后会让选择 选择class即可 类图的语法 在画类图的时候分为五种 1. 依赖 依赖分为好多种, 作为成员变量,作为方法的入参和出参,在类中使用…

【JSP菜鸟教程】

简介 JSP是一种Java servlet&#xff0c;主要用于实现Java web应用程序的用户界面部分。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 Scriptlet脚本小程序 如果你想在HTML中写Java代码&#xff0c;就需要将Java代码写入Scriptlet中&#xff0…

数据库实验一:数据定义与操作语言实验

实验一 数据定义与操作语言实验 实验 1.1 数据库定义实验 1.实验目的 理解和掌握数据库DDL语言&#xff0c;能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。 2.实验内容和要求 理解和掌握SQL DDL语句的语法&#xff0c;特别是各种参数的具体含义和使用方…

第十七届D2大会(I)

一、Web Compass-端内Web App解决方案揭秘 增强传统web端内方案&#xff0c;提供更好、更收敛的工程体验 二、自渲染跨端框架在字节跳动的实践与展望 基于Flutter Engine的二次开发 三、Qking&#xff1a;跨端JS引擎的深度探索与突破 常见js引擎&#xff0c;如&#xff1a;v8…

CSC7268

CSC7268概述: CSC7268是一款内置高压MOS的高性能、多工作模式的PWM控制芯片&#xff0c;内置多种保护机制。当系统为空载和轻载时&#xff0c;CSC7268采用Burst和Green控制模式可有效地减少了空载和轻载时的损耗。当系统为中载和重载时&#xff0c;芯片采用QR模式和CCM模式可有…

python基础: filter, lambda 函数表达式

filter(function or None, sequence)&#xff0c;其中sequence 可以是list ,tuple,string。这个函数的功能是过滤出sequence 中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回. filter只能接受两个参(function,sequence) &#xff0c;其…

Biotin-PEG-SH,Biotin-PEG-Thiol,生物素PEG巯基PEG衍生物供应

英文名称&#xff1a;Biotin-PEG-Thiol&#xff0c;Biotin-PEG-SH 中文名称&#xff1a;生物素-聚乙二醇-巯基 生物素-PEG-SH通过与链霉亲和素或抗生物素结合进行聚乙二醇化&#xff0c;具有高亲和力和特异性。生物素通过稳定的酰胺连接物与线性PEG结合。它具有与马来酰亚胺选…

java 瑞吉外卖day3 公共字段自动填充 新增分类

公共字段自动填充 代码实现 1. TableField(fill FieldFill.INSERT)//插入时填充字段 private LocalDateTime createTime;TableField(fill FieldFill.INSERT_UPDATE)//插入和更新时填充字段 private LocalDateTime updateTime;TableField(fill FieldFill.INSERT) private Lo…

数据库实验六:存储过程实验

实验六 存储过程实验 实验6.1 存储过程实验 1.实验目的 ​ 掌握数据库PL/SQL编程语言&#xff0c;以及数据库存储过程的设计和使用方法。 2.实验内容和要求 ​ 存储过程定义&#xff0c;存储过程运行&#xff0c;存储过程更名&#xff0c;存储过程删除&#xff0c;存储过程…

[附源码]Python计算机毕业设计Django少儿节目智能推荐系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Oracle数据的备份和恢复

Oracle数据的备份和恢复 ​ 当我们使用一个数据库时,总希望数据是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故…

logistic回归的标准化回归系数 计算方式

创建于&#xff1a;2022.12.17 修改于&#xff1a;2022.12.17 文章目录1、未标准化回归系数2、标准化回归系数3、两者的区别4、手动计算5、计算样例6、参考资料1、未标准化回归系数 通常我们在构建多因素回归模型时&#xff0c;方程中呈现的是未标准化回归系数&#xff0c;它是…

【财务】财务分析---管理报告体系搭建

财务分析体系搭建的是一个系统化的功能&#xff0c;涉及的业务面非常广&#xff0c;财务分析也能表现出清晰的数据&#xff0c;以此进行改善&#xff1b;本文作者详细分析了财务分析中的管理报告体系的搭建&#xff0c;我们一起来看一下。 一、理清核算、财报、管报、预算关系 …

java设计模式(下)

文章目录第六章 行为型模式(11种)6.1 观察者模式6.1.1 观察者模式介绍6.1.2 观察者模式原理6.1.3 观察者模式实现6.1.4 观察者模式应用实例6.1.5 观察者模式总结6.2 模板方法模式6.2.1 模板方法模式介绍6.2.2 模板方法模式原理6.2.3 模板方法模式实现6.2.4 模板方法模式应用实例…

计算机网络——PPP协议与HDLC协议

广域网 广域网通常跨接很大的1物理范围&#xff0c;所覆盖的范围从几十公里到几千公里&#xff0c;他能链接多个城市或者国家&#xff0c;并且横跨几个州并能提供远距离通信。 广域网的通信子网使用的分组交换技术&#xff0c;广域网的通信子网可以利用公用分局交换网&#xf…

我也“阳”了

大家好&#xff0c;我是哪吒&#xff0c;我也“阳”了&#xff0c;现在是北京时间2022年12月17日 18:36&#xff0c;这篇文章简单说一下我“阳”了的经历和感受。 昨天下午&#xff0c;发现嗓子疼&#xff0c;不舒服&#xff0c;喝了很多茶水&#xff0c;喝了一瓶蓝芩口服液&a…

【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)

一、RDD的概念 RDD&#xff08;Resilient Distributed Dataset&#xff09;&#xff0c;即弹性分布式数据集&#xff0c;是一个容错的、并行的数据结构&#xff0c;可以让用户显式地将数据存储到磁盘和内存中&#xff0c;并且还能控制数据的分区。不同RDD之间可以通过转换操作…

SLAM 几何基础

SLAM 几何基础1. 向量运算及其几何意义1.1 内积1.1.1 内积定义1.1.2 内积几何意义1.1.3 内积微分性质1.2 外积1.2.1 外积定义1.2.2 外积几何意义1.2.3 外积微分性质2. 线面特征运算2.1 点到直线距离2.2 点到平面距离Reference:深蓝学院-多传感器融合 1. 向量运算及其几何意义 …

QT系列第4节 QT包含模块以及常用的数据类型和容器

QT中包含很多模块&#xff0c;这些模块都是建立在常用数据类型和容器基础之上的。本篇简单介绍一下常用模块&#xff0c;常用数据类型&#xff0c;常用容器类。 目录 1.QT模块分类 2.QT基本数据类型 3.QString和QByteArray区别 4.QT中的容器 1.QT模块分类 &#xff08;1&…