当前位置: 首页 > news >正文

两数相加的问题

题目是:给两个非空的链表,表示两个非负整数。它们每位数都是按照逆序的方式存储,并且每一个节点只能存储一位数字。现在两个数相加,并且以相同的形式返回一个表示和的链表

首先回顾一下,什么是链表?链表是一种数据结构,由一系列的节点组成,每一个节点有两个部分:一部分是存储数据元素,一部分是存储下一个节点地址的指针。

在解答这个题目过程中还运用到进位,进位是一种运算形式,加法运算中,每一数位上的数相加满十,则用一个高位上的数记其和1

既然是链表运算,就先定义一个链表节点的构造函数:

 class ListNode {constructor(val, next = null) {this.val = val;this.next = next;}
}

在运算的函数里面,首先要定义一个头节点:

let Head = new ListNode(0);

定义一个表示当前节点的变量:

let current = Head;

进位标志为:

let carry = 0;

遍历链表:

while (l1 !== null || l2 !== null) { // 当两个链表中任意一个不为空时继续循环let n1 = l1 === null ? 0 : l1.val; // 若l1为空,则取值为0let n2 = l2 === null ? 0 : l2.val; // 若l2为空,则取值为0let sum = n1 + n2 + carry; // 计算当前位和进位之和carry = Math.floor(sum / 10); // 计算新的进位current.next = new ListNode(sum % 10); // 创建新节点,并设置其值为和除以10的余数current = current.next; // 移动到下一个节点if (l1 !== null) l1 = l1.next; // 移动l1指针if (l2 !== null) l2 = l2.next; // 移动l2指针}

如果进位标志大于0,那就在链表后面添加一个新的节点:

  if (carry > 0) {current.next = new ListNode(carry);}

最后返回链表。

完整代码如下:

class ListNode {constructor(val, next = null) {this.val = val;this.next = next;}
}/*** @param {ListNode} l1* @param {ListNode} l2* @return {ListNode}*/
var addTwoNumbers = function(l1, l2) {
let dummyHead = new ListNode(0); // 创建一个虚拟头节点let current = dummyHead; // 当前节点指针,初始指向虚拟头节点let carry = 0; // 进位标志while (l1 !== null || l2 !== null) { // 当两个链表中任意一个不为空时继续循环let n1 = l1 === null ? 0 : l1.val; // 若l1为空,则取值为0let n2 = l2 === null ? 0 : l2.val; // 若l2为空,则取值为0let sum = n1 + n2 + carry; // 计算当前位和进位之和carry = Math.floor(sum / 10); // 计算新的进位current.next = new ListNode(sum % 10); // 创建新节点,并设置其值为和除以10的余数current = current.next; // 移动到下一个节点if (l1 !== null) l1 = l1.next; // 移动l1指针if (l2 !== null) l2 = l2.next; // 移动l2指针}// 如果最后还有进位,则在链表末尾添加一个新的节点表示这个进位if (carry > 0) {current.next = new ListNode(carry);}return dummyHead.next;
};

相关文章:

两数相加的问题

题目是:给两个非空的链表,表示两个非负整数。它们每位数都是按照逆序的方式存储,并且每一个节点只能存储一位数字。现在两个数相加,并且以相同的形式返回一个表示和的链表。 首先回顾一下,什么是链表?链表…...

微信小程序的单位

在小程序开发中,rpx是一种相对长度单位,用于在不同设备上实现自适应布局。它是微信小程序特有的单位,表示屏幕宽度的 1/750。 rpx单位的好处在于可以根据设备的屏幕宽度进行自动换算,使得页面在不同设备上保持一致的显示效果。例…...

软考通过率真的低吗?

软考通过率有多少?高项有必要找培训机构吗? 相对来说软考的通过率的确比其他考试要低,因为它的知识点有点杂,专业知识、政策、计算机系统各个方面的知识都需要去掌握。根据以往的数据来说高项(信息系统项目管理师&…...

国际视频编解码标准提案下载地址

H.266 相关提案下载地址:http://phenix.it-sudparis.eu/jvet/ 更新的地址:https://jvet-experts.org/ H.265 提案下载地址:http://phenix.int-evry.fr/jct/ 标准文档下载地址:http://www.itu.int/rec/T-REC-H.265 H.264 提案下载…...

程序员是如何看待“祖传代码”的?

文章目录 每日一句正能量前言祖传代码的历史与文化价值祖传代码的技术挑战与机遇祖传代码与现代开发实践的融合祖传代码的管理与维护策略后记 每日一句正能量 黎明时怀着飞扬的心醒来,致谢爱的又一天,正午时沉醉于爱的狂喜中休憩,黄昏时带着感…...

Python爬虫之爬取并下载哔哩哔哩视频

亲自使用过,太好用了 # 导入requests模块,模拟发送请求 import requests # 导入json import json # 导入re import re# 定义请求头 headers {Accept: */*,Accept-Language: en-US,en;q0.5,User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6…...

python 脚本设置输出颜色

在Python脚本中设置输出颜色,通常可以使用colorama库,它可以在Windows、Linux和macOS等平台上工作。colorama库扩展了Python的标准库,使得在控制台输出彩色文本更加简单。 首先,你需要安装colorama库。如果你还没有安装&#xff…...

安卓websocket(客服端和服务端写在app端) 案例

废话不多说直接上代码 首选导入 implementation "org.java-websocket:Java-WebSocket:1.4.0" package com.zx.qnncpds.androidwbsocket;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button;import a…...

C++面试宝典第34题:整数反序

题目 给出一个不多于5位的整数, 进行反序处理。要求: 1、求出它是几位数。 2、分别输出每一位数字。仅数字间以空格间隔, 负号与数字之间不需要间隔。如果是负数,负号加在第一个数字之前, 与数字没有空格间隔。注意:最后一个数字后没有空格。 3、按逆序输出各位数字。逆序后…...

微信商城小程序设计

简介 完整实现了集下单、支付、物流、评价、退款等功能的微信商城版小程序以及商城的管理后台,涉及商品的分类、规格的配置,商品上架等等。 产品效果图 项目链接 java后台:mall微信商城: 微信商城小程序。完整实现了集下单、支付、物流、评…...

如何合理布局子图--确定MATLAB的subplot子图位置参数

确定MATLAB的subplot子图位置参数 目录 确定MATLAB的subplot子图位置参数摘要1. 问题描述2. 计算过程2.1 确定子图的大小和间距2.2 计算合适的figure大小2.3 计算每个子图的position数据 3. MATLAB代码实现3.1 MATLAB代码3.2 绘图结果 4. 总结 摘要 在MATLAB中,使用…...

【MySQL】基于Docker搭建MySQL一主二从集群

本文记录了搭建mysql一主二从集群,这样的一个集群master为可读写,slave为只读。过程中使用了docker,便于快速搭建单体mysql。 1,准备docker docker的安装可以参考之前基于yum安装docker的文章[1]。 容器相关命令[2]。 查看正在…...

k8s 集群调度,标签,亲和性和反亲和性,污点和容忍,pod启动状态 排错详解

目录 pod启动创建过程 kubelet持续监听的原因 调度概念 调度约束 调度过程 优点 原理 优先级选项 示例 指定调度节点 标签基本操作 获取标签帮助 添加标签(Add Labels): 更新标签(Update Labels) 删除标…...

Idea 启动报错 failed to create jvm:jvm path url

1、情况 针对于在 idea 中,通过界面的形式改了 -Xmx 等类似的参数,并且设置的值过大,导致下次启动 idea 报错 2、解决 找到如图所示的文件 打开编辑该文件,把类似 -Xmx 等参数的值调小,保存文件并关闭&#xff0…...

20款Visual Studio实用插件推荐

前言 俗话说的好工欲善其事必先利其器,安装一些实用的Visual Studio插件对自己日常的开发和工作效率能够大大的提升,避免996从选一款好的IDE实用插件开始。以下是我认为比较实用的Visual Studio插件,希望对大家有所帮助。 各位小伙伴有更好的…...

基于SpringBoot的在线拍卖系统

目录 1、 前言介绍 2、主要技术 3、系统流程和逻辑 4、系统结构设计 5、数据库设计表 6、运行截图(部分) 6.1管理员功能模块 6.2用户功能模块 6.3前台首页功能模块 7、源码获取 基于SpringBoot的在线拍卖系统录像 1、 前言介绍 随着社会的发展,社会的各行…...

“互动+消费”时代,借助华为云GaussDB重构新零售中消费逻辑

场与人的关系 “人—货—场”是零售中重要的三要素,我们一直在追求,将零售中的人、货、场进行数字化并在云端进行整合,形成属于我们自己的云平台。 随着互联网技术为信息提供的便利,消费者的集体力量正在逐渐形成一股强大的反向…...

AI大全-通往AGI之路

背景 自从AI大模型出来之后,就有很多做资源整理的社区,整理学习资料,整理各种AI工具大全,我也整理过一段时间的最新AI的资讯,也曾尝试去弄一个AI的入口类的东西。但是最近看到一个在飞书上的分享,我觉得他…...

CSS中如何解决 1px 问题?

1px 问题指的是:在一些 Retina屏幕 的机型上,移动端页面的 1px 会变得很粗,呈现出不止 1px 的效果。原因很简单——CSS 中的 1px 并不能和移动设备上的 1px 划等号。它们之间的比例关系有一个专门的属性来描述: window.devicePix…...

IO 与 NIO

优质博文:IT-BLOG-CN 一、阻塞IO / 非阻塞NIO 阻塞IO:当一条线程执行read()或者write()方法时,这条线程会一直阻塞直到读取到了一些数据或者要写出去的数据已经全部写出,在这期间这条线程不能做任何其他的事情。 非阻塞NIO&…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

深度学习习题2

1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...