算法题:两数相加
题目: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
- 题目数据保证列表表示的数字不含前导零
解题思路
需要注意的是各种进位问题。极端情况,例如:
输入: (9 -> 9 -> 9 -> 9 -> 9) + (1 -> )
输出: 0 -> 0 -> 0 -> 0 -> 0 -> 1
为了处理方法统一,可以先建立一个虚拟头结点,这个虚拟头结点的 Next
指向真正的 head
,这样 head
不需要单独处理,直接 while 循环即可。另外判断循环终止的条件不用是 p.Next != nil
,这样最后一位还需要额外计算,循环终止条件应该是 p != nil
。
实现代码
package leetcodeimport ("github.com/superproj/go-leetcode/structure"
)// ListNode define
type ListNode = structure.ListNode/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {head := &ListNode{Val: 0}n1, n2, carry, current := 0, 0, 0, headfor l1 != nil || l2 != nil || carry != 0 {if l1 == nil {n1 = 0} else {n1 = l1.Vall1 = l1.Next}if l2 == nil {n2 = 0} else {n2 = l2.Vall2 = l2.Next}current.Next = &ListNode{Val: (n1 + n2 + carry) % 10}current = current.Nextcarry = (n1 + n2 + carry) / 10}return head.Next
}
单元测试
package leetcodeimport ("testing""github.com/stretchr/testify/assert""github.com/superproj/go-leetcode/structure"
)func Test_addTwoNumbers(t *testing.T) {assert := assert.New(t)type args struct {first []intsecond []int}tests := []struct {args argswant []int}{{args: args{[]int{}, []int{}},want: []int{},},{args: args{[]int{1}, []int{1}},want: []int{2},},{args: args{[]int{1, 2, 3, 4}, []int{1, 2, 3, 4}},want: []int{2, 4, 6, 8},},{args: args{[]int{1, 2, 3, 4, 5}, []int{1, 2, 3, 4, 5}},want: []int{2, 4, 6, 8, 0, 1},},{args: args{[]int{1}, []int{9, 9, 9, 9, 9}},want: []int{0, 0, 0, 0, 0, 1},},{args: args{[]int{9, 9, 9, 9, 9}, []int{1}},want: []int{0, 0, 0, 0, 0, 1},},{args: args{[]int{2, 4, 3}, []int{5, 6, 4}},want: []int{7, 0, 8},},{args: args{[]int{1, 8, 3}, []int{7, 1}},want: []int{8, 9, 3},},}for _, tt := range tests {first := structure.Ints2List(tt.args.first)second := structure.Ints2List(tt.args.second)actual := structure.List2Ints(addTwoNumbers(first, second))assert.Equal(tt.want, actual)}
}
- 知识星球:令飞编程。12+ 高质量体系课( Go、云原生、AI Infra)、20+ 高质量实战项目,P8 技术专家助你提高技术天花板,冲击百万年薪!
- 我公众号:令飞编程,聚焦于 Go、云原生、AI Infra、职场领域的分享!回复「资料」免费下载 Go、云原生等学习资料;
- 哔哩哔哩:令飞编程 ,以视频、直播的形式,分享技术、职场、课程、面经等;
相关文章:
算法题:两数相加
题目:2. 两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&a…...
SCI科学论文的重要组成部分
科学论文的核心结构 科学论文通常遵循IMRAD结构,即: 引言(Introduction)方法(Methods)结果(Results)讨论(Discussion) 除此之外,还包括其他几个关键部分。让我为您详细介绍每个部分的作用和重要性: 1. 标题(Title) 标题是论文…...
Go 微服务框架 | 路由实现
文章目录 不用框架实现web接口实现简单的路由实现分组路由支持不同的请求方式支持同一个路径的不同请求方式前缀树应用前缀树完善路由代码 不用框架实现web接口 // blog main.go 文件 package mainimport ("fmt""log""net/http" )func main() {…...
2025年AI开发学习路线
目录 一、基础阶段(2-3个月) 1. 数学与编程基础 2. 机器学习入门 二、核心技能(3-4个月) 1. 深度学习与框架 2. 大模型开发(重点) 三、进阶方向(3-6个月) 1. 多模态与智能体…...
TimescaleDB 2.19.2 发布
TimescaleDB 2.19.2 已于 2025 年 4 月 7 日发布2。此次发布是基于 PostgreSQL 的开源时序数据库 TimescaleDB 的一次更新。 从 GitHub 上的 Pull Request 信息可知,此次发布主要是将相关更改合并到 2.19.x 分支,涉及到一系列的测试和构建配置,包括不同版本 PostgreSQL(如 …...
「Unity3D」TextMeshPro中的TMP_InputField,用来实现输入框的几个小问题
第一,正确设置Scrollbar。 设置Scrollbar之后,不能设置Text Component的Font Size为Auto Size,否则Scrollbar无法正确计算显示。 那么,要想自动适配字体大小,可以让Placeholder中的Font Size设置为Auto,这…...
HTML 是什么?网页创建的核心标记语言
原文:HTML 是什么?网页创建的核心标记语言 | w3cschool笔记 HTML 是什么? HTML 是一种标记语言,用于创建网页。简单来说,HTML 就像一本魔法书,它告诉电脑如何展示网页上的内容,比如文字、图片…...
考研单词笔记 2025.04.09
act v表现,行动,做事,扮演,充当,担任,起作用n行为,行动,法案,法令 action n行为,行动 behave v表现,行事,守规矩,举止端…...
map/multimap
1.概念 map中所有元素都是pair<key,value>,key 是map的键,value 是map的值 所有元素都会根据key自动排序 map/multimap属于关联式容器,底层结构是用二叉树实现。 map和multimap区别: map不允许容器中有重复key值元素 m…...
CSS 定位属性的生动比喻:以排队为例理解 relative 与 absolute
目录 一、理解标准流与队伍的类比 二、relative 定位:队伍中 “小范围活动” 的人 三、absolute 定位:队伍中 “彻底离队” 的人 在学习 CSS 的过程中,定位属性relative和absolute常常让初学者感到困惑。它们的行为方式和对页面布局的影响较…...
基于二叉堆实现的 PriorityQueue
基于二叉堆实现的 PriorityQueue 是一种常见的数据结构,广泛用于任务调度、路径搜索、事件模拟等场景。下面我将用 Java 语言实现一个简单的基于最小堆的 PriorityQueue,即优先级最小的元素先出队。 ✅ 实现目标 使用数组实现二叉最小堆(即父…...
大模型分布式推理和量化部署
一、小常识 1、计算大模型占用多少显存 对于一个7B(70亿)参数的模型,每个参数使用16位浮点数(等于 2个 Byte)表示,则模型的权重大小约为: 7010^9 parameters2 Bytes/parameter14GB 70亿个参数…...
循环神经网络 - 长程依赖问题及改进方案
循环神经网络在学习过程中的主要问题是由于梯度消失或爆炸问题,很难建模长时间间隔(Long Range)的状态之间的依赖关系。 本文我们来学习长程依赖问题及其对应的改进方案,在这部分知识的学习过程中,我建议大家着重理解,对于数学公…...
点击抽奖功能总结
首先用户打开网页,映入眼帘的是一个输入框和一个提交按钮。当用户在输入框中输入自己的年龄并点击提交后,系统会根据输入的年龄给出相应提示。若年龄达到 60 岁,页面将显示一个新的抽奖区域,用户可以点击 “抽奖” 按钮开始抽奖。…...
AWS Bedrock生成视频详解:AI视频创作新时代已来临
💡 TL;DR: AWS Bedrock现已支持AI视频生成功能,让企业无需深厚AI专业知识即可创建高质量视频内容。本文详解Bedrock视频生成能力的工作原理、应用场景和实操指南,助你快速掌握这一革命性技术。 🎬 AWS Bedrock视频生成:改变内容创作的游戏规则 还记得几年前,制作一个专…...
理解 TOGAF®标准中的架构原则
原则是帮助组织实现其使命的基本规则和指南。它们旨在长期稳定且很少修改,在各个领域中充当决策和行动的指南针。在企业架构(EA)的背景下,原则在指导架构框架的开发和应用方面发挥着至关重要的作用。本文将探讨企业原则和架构原则…...
基于视觉密码的加密二值图像可逆数据隐藏
接下来,分享一篇论文,标题为《Multi-Party Reversible Data Hiding in Ciphertext Binary Images Based on Visual Cryptography》,由Bing Chen等人发表在《IEEE Signal Processing Letters》上。该论文提出了一种基于视觉密码学的多方可逆数…...
ubuntu22.04 中 No module named ‘_bz2‘问题解决方案
前言 本篇是介绍ubuntu22.04中 No module named ‘_bz2‘问题解决方案 网上版本很多,比如安装libbz库什么的,可能别人有用,但是我自己这边出了一堆问题 一、流程 1.1 查看bz2.xx.so文件 看自己的python版本,我新安装了个pyth…...
什么是声波,声波的传播距离受哪些因素影响?
一、声波的定义: 声波是一种机械波,它是通过介质(如空气、水、固体等)传播的振动。以下是关于声波的详细介绍: 1、声波的产生 声波是由物体的振动产生的。例如,人说话时,声带振动产生声波&…...
用PHPExcel 封装的导出方法,支持导出无限列
用PHPExcel 封装的导出方法,支持导出无限列 避免PHPExcel_Exception Invalid cell coordinate [1 异常错误 /*** EXCEL导出* param [string] $file_name 保存的文件名及表格工作区名,不加excel后缀名* param [array] $fields 二维数组* param [array] $…...
STL-stack栈和queue队列
stack栈和queue队列 在STL中 stack 和 queue 设计为容器适配器,容器适配器是使用特定容器类的封装对象作为其基础容器的类,提供一组特定的成员函数来访问其元素。 在我的STL系列中之前的容器 vector、list、deque 都是从底层类型一步步封装而来的,但是 stack 和 queue 没有…...
AI 提示词不会写?试试 PromptIDE
这段时间,AI 技术大爆炸 已经改变了我们的工作方式,而 会不会用 AI,已经成为区分工作能力的关键! 💡 在这个AI重构工作方式的时代,会用和不会用AI的人正在拉开巨大差距: √ 高手用AI——效率飙…...
【python读取并显示遥感影像】
在Python中读取并显示遥感影像,可以使用rasterio库读取影像数据,并结合matplotlib进行可视化。以下是一个完整的示例代码: import rasterio import matplotlib.pyplot as plt import numpy as np# 打开遥感影像文件 with rasterio.open(path…...
代码随想录算法训练营第十三天
LeetCode题目: 110. 平衡二叉树257. 二叉树的所有路径404. 左叶子之和222. 完全二叉树的节点个数3375. 使数组的值全部为 K 的最少操作次数(每日一题) 其他: 今日总结 往期打卡 110. 平衡二叉树 跳转: 110. 平衡二叉树 学习: 代码随想录公开讲解 问题: 给定一个二叉树&#…...
TQTT_KU5P开发板教程---高速收发器之XDMA实现PCIE
文档功能介绍 本文档主要实现了通过一个叫做XDMA的IP,实现PCIE的测试例子。工程新建方法请参考文档《流水灯》。 Vivado创建项目 起始页(或 file-->Project-->New 创建新工程(Create New Project) 向导起始页面 点击 Next--> Project Name(…...
蓝桥杯速成刷题清单(上)
一、1.排序 - 蓝桥云课 (快速排序)算法代码: #include <bits/stdc.h> using namespace std; const int N 5e5 10; int a[N];int main() {int n;cin >> n;for (int i 0; i < n; i) {cin >> a[i];}sort(a, a n);for …...
【FreeRTOS】二值信号量 是 消息队列 吗
在读FreeRTOS内核实现与应用开发实战指南的时候,书中第16章有这么一句话:可以将二值信号量看作只有一个消息的队列,incident这个队列只能为空或满(因此称为二值),在运用时只需要之傲队列中是否由消息即可&a…...
BOTA六维力矩传感器在三层AI架构中的集成实践:从数据采集到力控闭环
随着机器人技术的迅猛发展,Bota六维力矩传感器成为三层AI架构中的核心组件。它通过高精度的力与力矩感知能力,为感知层提供实时数据支持,优化了决策层的判断效率,并确保执行层操作的精确性和安全性。 Bota贯通式力矩传感器PixOne&…...
UE5 matcap学习笔记
没难度节点,但是要记住这种思维,移动端常用: 原视频:(美学阿姨)MatCap材质原理讲解与UE5中的实现方法_哔哩哔哩_bilibili...
神经网络 - 关于简单的激活函数的思考总结
最近一直在学习神经网络,有一些收获,也有一些迷惑,所以驻足思考:为什么简单的激活函数如sigmoid函数、ReLU函数,当应用在神经网络的模型中,却可以实现对现实世界复杂的非线性关系的模拟呢?本文我…...
pig 权限管理开源项目学习
pig 源码 https://github.com/pig-mesh/pig 文档在其中,前端在文档中,官方视频教学也在文档中有。 第一次搭建,建议直接去看单体视频,照着做即可。 文章目录 项目结构Maven 多模块项目pig-boot 启动核心模块pig-auth 实现认证和…...
excel中的VBA指令示例(二)
。。。接上篇。 Range("D1").Select ’选择D1单元格 ActiveCell.FormulaR1C1 "装配数量" ‘单元格内容为装配数量 Range("D1").Select Selection.AutoFilter …...
基于vue3与supabase系统认证机制
1. 认证框架概述 系统采用 Supabase 作为认证和数据服务提供商,实现了完整的用户身份验证流程。系统使用基于 JWT (JSON Web Token) 的认证方式,提供了安全可靠的用户身份管理机制。 1.1 技术栈 前端: Vue 3 TypeScript状态管理: Pinia认证服务: Sup…...
【算法笔记】并查集详解
🚀 并查集(Union-Find)详解:原理、实现与优化 并查集(Union-Find)是一种非常高效的数据结构,用于处理动态连通性问题,即判断若干个元素是否属于同一个集合,并支持集合合…...
基于Redis实现短信防轰炸的Java解决方案
基于Redis实现短信防轰炸的Java解决方案 前言 在当今互联网应用中,短信验证码已成为身份验证的重要手段。然而,这也带来了"短信轰炸"的安全风险 - 恶意用户利用程序自动化发送大量短信请求,导致用户被骚扰和企业短信成本激增。本…...
编程中,!! 双感叹号的理解
在编程中,!! 双感叹号的含义取决于上下文。通常情况下,!! 是逻辑非操作符的双重使用,用来将一个值强制转换为布尔类型。 1. 逻辑非操作符 在 JavaScript 中,! 是逻辑非操作符,它会将一个值转换为布尔类型:…...
ARM内核与寄存器
ARM内核与寄存器详解 目录 ARM架构概述ARM处理器模式 Cortex-M3内核的处理器模式Cortex-A系列处理器模式 ARM寄存器集 通用寄存器程序计数器(PC)链接寄存器(LR)堆栈指针(SP)状态寄存器(CPSR/SPSR) 协处理器寄存器NEON和VFP寄存器寄存器使用规范常见ARM指令与寄存器操作 ARM架…...
【C++进阶】关联容器:set类型
目录 一、set 基本概念 1.1 定义与特点 1.2 头文件与声明 1.3 核心特性解析 二、set 底层实现 2.1 红黑树简介 2.2 红黑树在 set 中的应用 三、set 常用操作 3.1 插入元素 3.2 删除元素 3.3 查找元素 3.4 遍历元素 3.5 性能特征 四、set 高级应用 4.1 自定义比较…...
Linux内核——X86分页机制
X86分页机制 x86的分页单元支持两种分页模式:常规分页与扩展分页。 常规分页采用两级结构,固定页大小为4KB。线性地址被划分为三个字段: 页目录索引(最高10位)页表索引(中间10位)页内偏移&am…...
重温Java - Java基础二
工作中常见的6中OOM 问题 堆内存OOM 堆内存OOM 是最常见的OOM了。出现堆内存OOM 问题的异常信息如下 java.lang.OutOfMemoryError: Java heap space此OOM是由于Java中的heap的最大值,已经不能满足需求了。 举个例子 Test public void test01(){List<OOMTest…...
回溯算法+对称剪枝——从八皇后问题到数独问题(二)
引入: 本节我们进一步完善八皇后问题,学习剪枝、八皇后残局问题 进一步领会逻辑编程的概念,深入体会回溯算法,回顾上一节提到的启发搜索策略。 回顾: 八皇后问题:我们需要在一个空棋盘上放置 n 个皇后&a…...
基于 Spring Boot 瑞吉外卖系统开发(三)
基于 Spring Boot 瑞吉外卖系统开发(三) 分类列表 静态页面 实现功能所需要的接口 定义Mapper接口 Mapper public interface CategoryMapper extends BaseMapper<Category> {}定义Service接口 public interface CategoryService extends ISe…...
Pascal VOC 2012 数据集格式与文件结构
Pascal VOC 2012 1 Pascal VOC 2012 数据集1.1 数据集概述1.2 文件结构1.3 关键文件和内容格式(1) Annotations/ 目录(2) ImageSets/ 目录(3) JPEGImages/ 目录(4) SegmentationClass/ 和 SegmentationObject/ 目录 1.4 标注格式说明(1) 目标检测标注(2) 语义分割标注(3)实例分…...
11:00开始面试,11:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
MySQL与Oracle字段类型对比及迁移指南
文章目录 MySQL与Oracle字段类型对比及迁移指南1. 核心字段类型对照表2. 常见函数对照表2.1 字符串函数2.2 日期函数2.3 数值函数2.4 类型转换函数2.5 空值处理函数2.6 其他常用函数3. 迁移配置细则4. 迁移工具推荐5. 常见问题解决方案6. 性能优化建议MySQL与Oracle字段类型对比…...
Spring MVC 处理 HTTP 状态码、响应头和异常的完整示例
Spring MVC 处理 HTTP 状态码、响应头和异常的完整示例 1. 正常响应处理 通过 ResponseEntity 可以灵活控制 HTTP 状态码、响应头和响应体。 代码示例:创建资源返回 201 并设置 Location 头 import org.springframework.http.HttpHeaders; import org.springfram…...
http页面的加载过程
HTTP/2 核心概念 1.1 流(Stream) • 定义:HTTP/2 连接中的逻辑通道,用于传输数据,每个流有唯一标识符(Stream ID)。 • 特点: ◦ 支持多路复用(多个流并行传输&#…...
动手人形机器人(RL)
1 PPO的讲解 核心步骤,如策略网络和价值网络的定义、优势估计、策略更新、价值更新等基础功能的实现 2 代码构成 可能涉及 初始化,Behavior Clone 3 动手强化学习 import pytorch as torch class actorcritic ##等待补充 4 PD Gains 在机器人学中&…...
使用RabbitMQ实现异步秒杀
搭建RabbitMQ 在虚拟机上用docker搭建RabbitMQ,首先拉取镜像 docker run --privilegedtrue -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management mkdir -p /usr/local/docker/rabbitmq再创建rabbitmq容器,下面的命令已经能够创建之后…...
基于PyQt5的企业级生日提醒系统设计与实现
在企业人力资源管理场景中,员工生日提醒是一项重要的关怀功能。本文将以一个基于PyQt5开发的生日提醒系统为例,深入解析桌面应用程序开发中的关键技术实现,涵盖GUI设计、数据持久化、系统集成、动画效果等核心模块。 一、技术选型分析 1.1 PyQt5框架优势 跨平台特性:支持W…...