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

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的表示范围,故不能将链表转为数字相加。
  • 采取逐位相加,计算进位的方式:
    1. 声明一个链表用来存放相加后的结果。
    2. 不断地取两个链表的最低位,相加后加上进位(初值为0),判断是否需要进位,需要进位则更新进位信息。
    3. 进位判断完成后,用尾插法将该数字插入到链表中(头插法逆转元素顺序,尾插法顺序不变)。
    4. 某一个链表遍历完后,需要对另一个链表单独遍历,进行同样的操作。
    5. 两个链表都遍历完后,需要检验最后是否有进位,有进位则用尾插法将进位插入到链表中。
  • 算法笔记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&#xff1a;示例 2&#xff1a;示例 3&#xff1a;提示&#xff1a;原题链接 题解解题思路代码实现&#xff08;C&#xff09; 题目 题目描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xf…...

抖去推无人直播+矩阵托管+AI文案撰写一体化工具如何开发搭建

一、 开发和搭建抖去推无人直播矩阵托管AI文案撰写一体化工具需要以下步骤&#xff1a; 确定功能需求&#xff1a;确定抖去推无人直播、矩阵托管和AI文案撰写的具体功能需求&#xff0c;如直播推流、直播管理、托管服务、AI文案生成等。 技术选型&#xff1a;选择适合开发该工…...

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— 弹窗组件

简介 弹窗是移动应用中常见的一种用户界面元素&#xff0c;常用于显示一些重要的信息、提示用户进行操作或收集用户输入。ArkTS提供了多种内置的弹窗供开发者使用&#xff0c;除此之外还支持自定义弹窗&#xff0c;来满足各种不同的需求。 下面是所有涉及到的弹窗组件官方文档…...

【嵌入式学习】Qtday03.21

一、思维导图 二、练习 自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面。&#xff08;不要使用课堂上的图片和代码&#xff0c;自己发挥&#xff0c;有利于后面项目的完成&#xff09; 要求&#xff1a; 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件…...

【C语言】C语言运算符优先级详解

文章目录 &#x1f4dd;前言&#x1f309;运算符优先级简述 &#x1f320;逻辑与和逻辑或&#x1f309;赋值和逗号运算符 &#x1f320;位运算&#x1f309;条件表达式&#x1f309;位运算与算术运算结合&#x1f309;混合使用条件表达式和赋值运算符&#x1f309; 逗号运算符的…...

第十节HarmonyOS 常用容器组件3-GridRow

1、描述 栅格容器组件&#xff0c;仅可以和栅格子组件&#xff08;GridCol&#xff09;在栅格布局场景中使用。 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&#xff08;NI&#xff09;公司生产的屏蔽式电缆。这款电缆通常用于连接数据采集设备和传感器或执行器&#xff0c;以实现信号传输和数据采集。SCXI-1193 电缆具有高度灵活…...

使用clion开发tftlcd屏,移植驱动时遇到的问题记录

问题现象 屏幕只有一半屏在刷新 问题出现的情况(在CLION开发时遇到过) 总结...

工程信号的去噪和(分类、回归和时序)预测

&#x1f680;【信号去噪及预测论文代码指导】&#x1f680; 还为小论文没有思路烦恼么&#xff1f;本人专注于最前沿的信号处理与预测技术——基于信号模态分解的去噪算法和深度学习的信号&#xff08;回归、时序和分类&#xff09;预测算法&#xff0c;致力于为您提供最精确、…...

【VUE】前端阿里云OSS断点续传,分片上传

什么是OSS&#xff1a; 数据以对象&#xff08;Object&#xff09;的形式存储在OSS的存储空间&#xff08;Bucket &#xff09;中。如果要使用OSS存储数据&#xff0c;您需要先创建Bucket&#xff0c;并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后&#xff0c;您…...

春招面试高频题目总结

面试问题 redis 可以用于进程间通信吗&#xff1f; Why&#xff1f;How? ---> 延展一下 有哪些进程间通信技术, 优劣如何&#xff1f; 有大量的插入sql语句&#xff0c;一条条的插入性能很差&#xff0c;如何通过事务进行优化&#xff1f; 保证线程安全的策略有哪些&…...

基于SSM+Jsp+Mysql的KTV点歌系统

基于SSMJspMysql的KTV点歌系统 基于SSMJspMysql的KTV点歌系统的设计与实现 开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工…...

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外包的隐形重负——沟通成本&#xff1a;当客户仅能提供大致需求&#xff0c;而IT公司则机械地执行&#xff0c;往往会导致项目细节中充满漏洞&#xff0c;用户体验大打折扣。 最终&#xff0c;项目不断延期&#xff0c;进度一拖再拖。探究其根源&#xff0c;客户往往并非IT…...

C++关键字:const

文章目录 一、const的四大作用1.修饰 变量、数组2.修饰 函数的形参、修饰 引用 (最常用&#xff09;3.修饰 指针&#xff1a;常量指针、指针常量 、只读指针4.修饰 类的成员函数、修饰 类的对象 一、const的四大作用 1.修饰 变量、数组 1.const修饰变量&#xff1a; 被const修…...

nodejs 常用命令

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;常用于服务器端编程。以下是一些 Node.js 的常用命令 1、安装 Node.js&#xff1a; 通常&#xff0c;你会从 Node.js 的官方网站下载并安装适合你操作系统的版本。安装完成后&#xff0c;你可以在命令行中…...

nginx配置详解+nginx_lua模块的使用

nginx基本配置详解 目录 nginx基本配置详解 nginx_lua模块使用方式 openresty介绍与安装 lua基本语法使用 全局配置&#xff1a; user&#xff1a;指定Nginx主进程运行的用户。在下方示例中&#xff0c;Nginx将以root用户身份运行。worker_processes&#xff1a;指定Ngi…...

大数据--hdfs--java编程

环境&#xff1a; virtualbox ubantu1604 Linux idea社区版2023 jdk1.8 hadoop相关依赖 使用java操作 1. 判断/user/stu/input/test.txt文件是否存在&#xff0c;存在则读出文件内容&#xff0c;打印在控制台上。反之&#xff0c;输出“文件不存在”。 package abc;impo…...

力扣由浅至深 每日一题.10 最后一个单词的长度

日子都是崭新的&#xff0c;我们下一章见 ——24.3.21 最后一个单词的长度 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后…...

零样本分类避坑指南:AI万能分类器使用中的注意事项与技巧

零样本分类避坑指南&#xff1a;AI万能分类器使用中的注意事项与技巧 1. 零样本分类技术概述 零样本分类&#xff08;Zero-Shot Classification&#xff09;是自然语言处理领域的一项突破性技术&#xff0c;它允许模型在没有特定任务训练数据的情况下&#xff0c;仅凭用户提供…...

如何一键永久禁用Windows Defender?终极开源解决方案指南

如何一键永久禁用Windows Defender&#xff1f;终极开源解决方案指南 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-control …...

芯片研发也能用 Minimum Viable Product?

MVP&#xff0c;全称 Minimum Viable Product&#xff08;最小可行性产品&#xff09;&#xff0c;最早是互联网产品圈的说法——先做最小可用版本&#xff0c;跑通核心逻辑&#xff0c;验证方向对不对&#xff0c;再慢慢迭代。 但是芯片不是 App&#xff0c;改一次要流片&…...

从Proteus仿真到实战:51单片机驱动ADC0808构建智能电压监测系统

1. 从基础电压表到智能监测系统的升级思路 很多电子爱好者第一次接触51单片机时&#xff0c;都会尝试制作数字电压表这个经典项目。我当年在学校实验室里&#xff0c;也是从这个小项目开始入门的。但基础电压表只能显示数值&#xff0c;就像只会报数的机器人&#xff0c;缺少实…...

Python-Skill Bridge:企业级EDA自动化解决方案,性能提升5倍的生产就绪工具

Python-Skill Bridge&#xff1a;企业级EDA自动化解决方案&#xff0c;性能提升5倍的生产就绪工具 【免费下载链接】skillbridge A seamless python to Cadence Virtuoso Skill interface 项目地址: https://gitcode.com/gh_mirrors/sk/skillbridge Python-Skill Bridge…...

STM32 HAL库串口调试终极指南:5分钟搞定printf重定向(附常见问题排查)

STM32 HAL库串口调试终极指南&#xff1a;5分钟搞定printf重定向&#xff08;附常见问题排查&#xff09; 在嵌入式开发中&#xff0c;串口调试是最基础也最实用的调试手段之一。想象一下&#xff0c;当你面对一个复杂的嵌入式系统&#xff0c;能够通过简单的printf语句输出变量…...

ESP8266红外MQTT网关:基于Homie协议的轻量级IoT封装

1. 项目概述simple-homie-iot-ir是一个面向 ESP8266 平台&#xff08;亦可适配 ESP32&#xff09;的轻量级嵌入式 IoT 封装库&#xff0c;其核心定位并非从零实现 Homie 规范&#xff0c;而是作为homie-iotESP 库的简化抽象层&#xff0c;专为红外&#xff08;IR&#xff09;设…...

2、 Verilog 代码规范

分类 Verilog 教程高级篇 不经意间看到几年前自己写的 FGPA 设计&#xff0c;代码风格勉强说的过去&#xff0c;但是逻辑设计方面的安全隐患比比皆是。许多初学者编写 Verilog 代码&#xff0c;基本都是按照 C 语言的思维和风格去设计&#xff0c;造成了很多不规范的共性问题。…...

MCP23S17 SPI端口扩展器原理与Arduino驱动实战

1. MCP23S17 嵌入式SPI端口扩展器深度技术解析MCP23S17 是 Microchip 公司推出的 16 通道、SPI 接口的可编程 I/O 端口扩展芯片&#xff0c;广泛应用于资源受限的嵌入式系统中&#xff0c;用于扩展主控 MCU 的 GPIO 数量。其核心价值在于以极低的硬件开销&#xff08;仅需 4 根…...

Redis持久化:从AOF到RDB,如何实现数据不丢失?烈

Qt是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...