LeetCode 2. 两数相加
目录
- 题目
- 题目描述
- 示例 1:
- 示例 2:
- 示例 3:
- 提示:
- 原题链接
- 题解
- 解题思路
- 代码实现(C)
题目
题目描述
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 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
- 题目数据保证列表表示的数字不含前导零
原题链接
- LeetCode 2. 两数相加
题解
解题思路
- 每个链表中的节点数在范围 [1, 100] 内,超出int或long的表示范围,故不能将链表转为数字相加。
- 采取逐位相加,计算进位的方式:
- 声明一个链表用来存放相加后的结果。
- 不断地取两个链表的最低位,相加后加上进位(初值为0),判断是否需要进位,需要进位则更新进位信息。
- 进位判断完成后,用尾插法将该数字插入到链表中(头插法逆转元素顺序,尾插法顺序不变)。
- 某一个链表遍历完后,需要对另一个链表单独遍历,进行同样的操作。
- 两个链表都遍历完后,需要检验最后是否有进位,有进位则用尾插法将进位插入到链表中。
- 算法笔记p253链表处理。
代码实现(C)
typedef struct ListNode node; // 表示声明的是一个结点
typedef struct ListNode List; // 表示声明的是一个单链表// 单链表向指定结点后插入结点
node *insert(node *pre, int value) {node *p = (node *) malloc(sizeof(node));p->val = value;node *r = pre->next;pre->next = p;p->next = r;return p;
}List *head = NULL; // 新建一个链表
node *tail = NULL; // 尾指针
int carry = 0; // 进位// 计算进位和插入结点
void calculate(int sum) {carry = 0; // 进位已经加到sum中,置为0if (sum >= 10) { // 如果可以产生进位carry = sum / 10; // 更新进位sum %= 10; // 取个位}tail = insert(tail, sum); // 尾插法插入结点
}struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) {head = (List *) malloc(sizeof(List)); // 初始化链表head->next = NULL;tail = head; // 尾指针一开始指向头结点carry = 0; // 初始化进位for (; l1 && l2; l1 = l1->next, l2 = l2->next) // 计算l1和l2共同长度部分calculate(l1->val + l2->val + carry);for (; l1; l1 = l1->next) // 计算l1剩余部分calculate(l1->val + carry);for (; l2; l2 = l2->next) // 计算l2剩余部分calculate(l2->val + carry);if (carry != 0) // 如果处理完l1和l2所以位数,还有进位tail = insert(tail, carry); // 尾插法插入进位return head->next;
}
相关文章:
LeetCode 2. 两数相加
目录 题目题目描述示例 1:示例 2:示例 3:提示:原题链接 题解解题思路代码实现(C) 题目 题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的…...
抖去推无人直播+矩阵托管+AI文案撰写一体化工具如何开发搭建
一、 开发和搭建抖去推无人直播矩阵托管AI文案撰写一体化工具需要以下步骤: 确定功能需求:确定抖去推无人直播、矩阵托管和AI文案撰写的具体功能需求,如直播推流、直播管理、托管服务、AI文案生成等。 技术选型:选择适合开发该工…...
【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— 弹窗组件
简介 弹窗是移动应用中常见的一种用户界面元素,常用于显示一些重要的信息、提示用户进行操作或收集用户输入。ArkTS提供了多种内置的弹窗供开发者使用,除此之外还支持自定义弹窗,来满足各种不同的需求。 下面是所有涉及到的弹窗组件官方文档…...
【嵌入式学习】Qtday03.21
一、思维导图 二、练习 自由发挥登录窗口的应用场景,实现一个登录窗口界面。(不要使用课堂上的图片和代码,自己发挥,有利于后面项目的完成) 要求: 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件…...
【C语言】C语言运算符优先级详解
文章目录 📝前言🌉运算符优先级简述 🌠逻辑与和逻辑或🌉赋值和逗号运算符 🌠位运算🌉条件表达式🌉位运算与算术运算结合🌉混合使用条件表达式和赋值运算符🌉 逗号运算符的…...
第十节HarmonyOS 常用容器组件3-GridRow
1、描述 栅格容器组件,仅可以和栅格子组件(GridCol)在栅格布局场景中使用。 2、子组件 可以包含GridCol子组件。 3、接口 GridRow(options:{columns: number | GridRowColumnOption, gutter?: Length | GutterOption, Breakpoints?: B…...
SCXI-1193是National Instruments公司生产的吗?
NI SCXI-1193是一款高密度、32通道RF多路复用器开关模块。 NI SCXI-1193 是一款由 National Instruments(NI)公司生产的屏蔽式电缆。这款电缆通常用于连接数据采集设备和传感器或执行器,以实现信号传输和数据采集。SCXI-1193 电缆具有高度灵活…...
使用clion开发tftlcd屏,移植驱动时遇到的问题记录
问题现象 屏幕只有一半屏在刷新 问题出现的情况(在CLION开发时遇到过) 总结...
工程信号的去噪和(分类、回归和时序)预测
🚀【信号去噪及预测论文代码指导】🚀 还为小论文没有思路烦恼么?本人专注于最前沿的信号处理与预测技术——基于信号模态分解的去噪算法和深度学习的信号(回归、时序和分类)预测算法,致力于为您提供最精确、…...
【VUE】前端阿里云OSS断点续传,分片上传
什么是OSS: 数据以对象(Object)的形式存储在OSS的存储空间(Bucket )中。如果要使用OSS存储数据,您需要先创建Bucket,并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后,您…...
春招面试高频题目总结
面试问题 redis 可以用于进程间通信吗? Why?How? ---> 延展一下 有哪些进程间通信技术, 优劣如何? 有大量的插入sql语句,一条条的插入性能很差,如何通过事务进行优化? 保证线程安全的策略有哪些&…...
基于SSM+Jsp+Mysql的KTV点歌系统
基于SSMJspMysql的KTV点歌系统 基于SSMJspMysql的KTV点歌系统的设计与实现 开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工…...
Docker Oracle提示密码过期
进入docker docker exec -it oracle bash 修改环境变量文件 vi .bash_profile 为以下内容 # .bash_profile# Get the aliases and functions if [ -f ~/.bashrc ]; then. ~/.bashrc fi# User specific environment and startup programsPATH$PATH:$HOME/binexport PATH expo…...
5.3、【AI技术新纪元:Spring AI解码】图像生成API
Spring 图像生成API Spring图像生成API旨在提供一个简单且便携的接口,用于与各类专注于图像生成的AI模型交互,使开发者能够在不同图像相关模型之间轻松切换,只需对代码进行最少的改动。这一设计遵循了Spring框架的模块化和可互换性理念,确保开发人员能够快速调整其应用程序…...
自营、入驻商城小程序开发
IT外包的隐形重负——沟通成本:当客户仅能提供大致需求,而IT公司则机械地执行,往往会导致项目细节中充满漏洞,用户体验大打折扣。 最终,项目不断延期,进度一拖再拖。探究其根源,客户往往并非IT…...
C++关键字:const
文章目录 一、const的四大作用1.修饰 变量、数组2.修饰 函数的形参、修饰 引用 (最常用)3.修饰 指针:常量指针、指针常量 、只读指针4.修饰 类的成员函数、修饰 类的对象 一、const的四大作用 1.修饰 变量、数组 1.const修饰变量: 被const修…...
nodejs 常用命令
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,常用于服务器端编程。以下是一些 Node.js 的常用命令 1、安装 Node.js: 通常,你会从 Node.js 的官方网站下载并安装适合你操作系统的版本。安装完成后,你可以在命令行中…...
nginx配置详解+nginx_lua模块的使用
nginx基本配置详解 目录 nginx基本配置详解 nginx_lua模块使用方式 openresty介绍与安装 lua基本语法使用 全局配置: user:指定Nginx主进程运行的用户。在下方示例中,Nginx将以root用户身份运行。worker_processes:指定Ngi…...
大数据--hdfs--java编程
环境: virtualbox ubantu1604 Linux idea社区版2023 jdk1.8 hadoop相关依赖 使用java操作 1. 判断/user/stu/input/test.txt文件是否存在,存在则读出文件内容,打印在控制台上。反之,输出“文件不存在”。 package abc;impo…...
力扣由浅至深 每日一题.10 最后一个单词的长度
日子都是崭新的,我们下一章见 ——24.3.21 最后一个单词的长度 给你一个字符串 s,由若干单词组成,单词前后…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
