LeetCode 2:两数相加

一、题目描述

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

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

你可以假设除了数字 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, 100] 内
  • 0 <= Node.val <= 9
  • 题目数据保证列表表示的数字不含前导零

二、思路分析

1、将两个链表看成是相同长度的进行遍历,如果一个链表较短则在前面补 0,例如:9999999 + 9999 = 9999999 + 0009999 = 10009998;
2、每一位计算的同时需要考虑上一位的进位问题,而当前位计算结束后同样需要更新进位值;
3、如果两个链表全部遍历完毕后,进位值为 1,则需要在结果链表最后添加新节点 1;

三、代码参考

1、Java

class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {// 创建预先指针,该指针的下一个节点指向返回结果的链表的头节点ListNode preNode = new ListNode(0);// 创建遍历时需要进行操作的指针ListNode currentNode = preNode;// 用来存储进位,初始值为 0 int carry = 0;// 循环遍历,同时遍历 l1、l2 两个链表,直到两个链表中的所有节点都遍历完毕为止while(l1 != null || l2 != null){// 获取 l1 链表的值,注意,由于链表的存储和实际数字是反过来,所以链表的头节点的值是个位int value1 = l1 == null ? 0 : l1.val;// 获取 l2 链表的值,注意,由于链表的存储和实际数字是反过来,所以链表的头节点的值是个位int value2 = l2 == null ? 0 : l2.val;// 每一位计算的同时需要考虑上一位的进位情况int sum = value1 + value2 + carry;// 计算是否有进位的情况carry = sum / 10;// 获取当前计算结果的个位数// 比如 7 + 8 = 15,那么 sum % 10 = 5int digit = sum % 10;// 构建一个节点用来存放这个个位数,把这个节点加入到结果链表中currentNode.next = new ListNode(digit);// currentNode 节点向后移动currentNode = currentNode.next;// l1 链表中还有节点未遍历完毕就继续遍历下去if(l1 != null) l1 = l1.next;// l2 链表中还有节点未遍历完毕就继续遍历下去if(l2 != null) l2 = l2.next;}// 两个链表的尾节点相加之后,有可能产生进位的情况,所以,需要构建一个新的节点用来存放这个进位的结果if(carry == 1) {// 把这个节点加入到结果链表中currentNode.next = new ListNode(carry);}// 返回结果链表return preNode.next;}
}

2、Python

class Solution(object):def addTwoNumbers(self, l1, l2):# 创建预先指针,该指针的下一个节点指向返回结果的链表的头节点preNode = ListNode(0)# 创建遍历时需要进行操作的指针currentNode = preNode# 用来存储进位,初始值为 0 carry = 0# 循环遍历,同时遍历 l1、l2 两个链表,直到两个链表中的所有节点都遍历完毕为止while l1 or l2 :# 获取 l1 链表的值,注意,由于链表的存储和实际数字是反过来,所以链表的头节点的值是个位value1 = l1.val if l1 else 0# 获取 l2 链表的值,注意,由于链表的存储和实际数字是反过来,所以链表的头节点的值是个位value2 = l2.val if l2 else 0# 每一位计算的同时需要考虑上一位的进位情况sum = value1 + value2 + carry# 计算是否有进位的情况carry = sum / 10# 获取当前计算结果的个位数# 比如 7 + 8 = 15,那么 sum % 10 = 5digit = sum % 10# 构建一个节点用来存放这个个位数,把这个节点加入到结果链表中currentNode.next = ListNode(digit)# currentNode 节点向后移动currentNode = currentNode.next# l1 链表中还有节点未遍历完毕就继续遍历下去if l1 :l1 = l1.next# l2 链表中还有节点未遍历完毕就继续遍历下去if l2 :l2 = l2.next# 两个链表的尾节点相加之后,有可能产生进位的情况,所以,需要构建一个新的节点用来存放这个进位的结果if carry == 1 :# 把这个节点加入到结果链表中currentNode.next = ListNode(carry)# 返回结果链表return preNode.next

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

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

相关文章

C-浮点数类型表示

文章目录 尽管最近有些小小的迷茫&#xff0c;但是刷题不能马虎啊&#xff01;最近在做790. 数的三次方根1&#xff0c;所以回顾一下C语言中是如何表示浮点数类型的。 以下是ChatGPT的回复&#xff1a; Elaborate on floating point types in C, such as tails and exponents…

QT上位机开发(网络程序界面开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 传统的上位机对接方式还是以232、485、can为主&#xff0c;随着网络的发展&#xff0c;越来越多的设备都是以网络进行通信的。毕竟相比较之前&…

java练习题之List(ArrayList)集合练习

List集合 习题&#xff1a; 1&#xff1a;完成以下填空&#xff1a; List 接口的特点是元素 有序 &#xff08;有|无&#xff09;顺序&#xff0c; 可重复 &#xff08;可以|不可以&#xff09;重复&#xff1b; 2&#xff1a;(List)关于List 集合描述正确的是&#xff08;…

python的getattr和getattribute调用

1 python的getattr和getattribute调用 python类的属性包括类属性、实例属性&#xff0c; 类属性&#xff1a;直接在类顶层赋值&#xff0c;或通过类名.属性名值赋值&#xff1b; 实例属性&#xff1a;通过self赋值&#xff0c;或通过实例名.属性名值赋值&#xff1b; 类实例…

肠道炎症与年龄和阿尔茨海默病病理学相关:一项人类队列研究

谷禾健康 ​阿尔茨海默 研究表明&#xff0c;慢性低水平的炎症&#xff08;“炎症衰老”&#xff09;可能是年龄相关疾病的一个介导因素&#xff0c;而肠道微生物通过破坏肠道屏障可能会促进炎症。 虽然老化和阿尔茨海默病&#xff08;AD&#xff09;与肠道微生物群组成的改变有…

Mybatis缓存实现方式

文章目录 装饰器模式Cache 接口及核心实现Cache 接口装饰器1. BlockingCache2. FifoCache3. LruCache4. SoftCache5. WeakCache 小结 缓存是优化数据库性能的常用手段之一&#xff0c;我们在实践中经常使用的是 Memcached、Redis 等外部缓存组件&#xff0c;很多持久化框架提供…

SQLAlchemy快速入门

安装依赖 pip install sqlalchemy pip install pymysql创建数据库和表 # 创建数据库 drop database if exists sqlalchemy_demo; create database sqlalchemy_demo character set utf8mb4; use sqlalchemy_demo;# 创建表 drop table if exists user; create table user (id …

ClickHouse基础介绍

目录 前言 1、什么是clickhouse 2、OLAP场景的关键特征 3、列式存储更适合于OLAP场景的原因 4、clickhouse的独特功能 5、clickhouse的缺点 6、性能 6.1、单个大查询的吞吐量 6.2、处理短查询的延迟时间 6.3、处理大量短查询的吞吐量 6.4、数据的写入性能 前言 11月…

Keras实现seq2seq

概述 Seq2Seq是一种深度学习模型&#xff0c;主要用于处理序列到序列的转换问题&#xff0c;如机器翻译、对话生成等。该模型主要由两个循环神经网络&#xff08;RNN&#xff09;组成&#xff0c;一个是编码器&#xff08;Encoder&#xff09;&#xff0c;另一个是解码器…

C++——list容器放入赋值,交换与大小操作

1. list 赋值和交换 功能描述: 给list容器进行赋值&#xff0c;以及交换list容器 函数原型: 1.assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身 2.assign(n, elem); //将n个elem拷贝赋值给本身 3.list& operator(const list &lst);//重载等…

Dart调用JS对10000条定位数据滤波

使用Dart调用JS&#xff0c;还是为了练习跨语言调用&#xff1b; 一、编写对应的JS代码 平时在开发时不推荐将算法放在JS里&#xff0c;我这里是简单的做一下数据过滤&#xff1b; 首先生成一些随机定位数据&#xff0c;在实际开发中可以使用真实数据&#xff1b; // 随机定…

git 常用命令 提交commit

提交一个commit git status test.txt 查看 指定文件test.txt 的状态 git add test.txt 添加 指定文件test.txt 到暂存区 git commit test.txt -m "commit msg" 提交 指定文件test.txtgit status …

汽车信息安全--芯片厂、OEM安全启动汇总(1)

目录 1.芯驰E3安全启动 2.STM32 X-CUBE-SBSFU 3.小米澎湃OS安全启动 4.小结 我在前篇文章里详细记录了车规MCU信息安全设计过程关于网络安全架构的思考过程,从芯片原厂、供应商、OEM等角度思考如何建立起完备的信任链; 不过这思考过程仅仅只是一家之言,因此我又对比了国…

vmware虚拟机安装esxi7.0步骤

一、安装准备 1、下载镜像文件 下载链接&#xff1a;https://pan.baidu.com/s/12XmWBCI1zgbpN4lewqYw6g 提取码&#xff1a;mdtx 2、vmware新建一个虚拟机 2.1 选择自定义 2.2 选择ESXi对应版本 2.3 选择稍后安装操作系统 2.4 默认选择 2.5 自定义虚拟机名称及存储位置 2…

forEach方法跳出循环

在for循环中&#xff0c;跳出循环有两种模式&#xff1a; break、continue&#xff1b;但是在forEach中&#xff0c;使用break或者continue都会报错&#xff1b;使用return在forEach不起作用&#xff0c;循环会继续执行&#xff0c;貌似充当了continue的角色。 forEach方法的机…

MyBatis学习二:Mapper代理开发、配置文件完成增删改查、注解开发

前言 公司要求没办法&#xff0c;前端也要了解一下后端知识&#xff0c;这里记录一下自己的学习 学习教程&#xff1a;黑马mybatis教程全套视频教程&#xff0c;2天Mybatis框架从入门到精通 文档&#xff1a; https://mybatis.net.cn/index.html Mapper代理开发 目的 解决…

Jenkins分布式实现: 构建弹性和可扩展的CI/CD环境!

Jenkins是一个流行的开源持续集成&#xff08;Continuous Integration&#xff0c;CI&#xff09;和持续交付&#xff08;Continuous Delivery&#xff0c;CD&#xff09;工具&#xff0c;它通过自动化构建、测试和部署过程&#xff0c;帮助开发团队更高效地交付软件。Jenkins的…

element ui弹窗在别的弹窗下方,优先级不高的问题

在弹窗的标签中加入append-to-body即可解决该问题&#xff1b; <el-dialog:title"title":visible.sync"dialogVisible"width"60%":before-close"handleClose":close-on-click-modal"false"append-to-body > </el-…

Oracle sid和service_name(服务名)地址写法不同

文章目录 场景总结 场景 项目需要切换数据库&#xff0c;批量改完配置文件后发现怎么有的地址前有//&#xff0c;有的没有 &#xff0c;是不是哪里改错了 。 后来确认了下。 带// 的是使用service_name连接的方式&#xff0c;是没有错的。 1.使用service_name,配置方式&#…

a标签锚点链接 + 遇到的问题

目录 需求背景实现思路遇到的问题问题解决关于锚点链接其他问题 需求背景 页面左侧是一级、二级标题&#xff0c;页面右侧是一级、二级标题对应的内容点击左侧标题&#xff0c;锚点链接&#xff0c;右侧内容跳转到左侧标题对应的内容区域 实现思路 通过 a 标签 id 的方法实现…