LEETCODE(力扣) 2. 两数相加(c语言实现)

news/2025/2/28 10:15:01/文章来源:https://www.cnblogs.com/Osen/p/18740435
  1. 两数相加

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

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

你可以假设除了数字 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
题目数据保证列表表示的数字不含前导零

/*
Definition for singly-linked list.
struct ListNode {
int val;
struct ListNode *next;
};
*/

struct ListNode jinwei;//用于最后进位,添加一个节点struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {int a=0;struct ListNode *p1,*p2;p1=l1;p2=l2;while(p1->next!=NULL&&p2->next!=NULL){if(a){p1->val=p1->val+p2->val+a;a=0;if(p1->val>=10){p1->val=p1->val%10;a=1;}p2->val=p1->val;p1=p1->next;p2=p2->next;continue;}p1->val=p1->val+p2->val;if(p1->val>=10){p1->val=p1->val%10;a=1;}p2->val=p1->val;p1=p1->next;p2=p2->next;}if(p1->next==NULL&&p2->next!=NULL){p2->val=p1->val+p2->val+a;if(p2->val>=10){p2->val=p2->val%10;a=1;}else{a=0;}p2=p2->next;while(a){p2->val=p2->val+a;if(p2->val>=10){p2->val=p2->val%10;a=1;}else{a=0;}if(p2->next!=NULL){p2=p2->next;}else{if(a){p2->next=&jinwei;jinwei.val=1;jinwei.next=NULL;a=0;}}}return l2;}else if(p2->next==NULL&&p1->next!=NULL){p1->val=p2->val+p1->val+a;if(p1->val>=10){p1->val=p1->val%10;a=1;}else{a=0;}p1=p1->next;while(a){p1->val=p1->val+a;if(p1->val>=10){p1->val=p1->val%10;a=1;}else {a=0;}if(p1->next!=NULL){p1=p1->next;}else{if(a){p1->next=&jinwei;jinwei.val=1;jinwei.next=NULL;a=0;}}}return l1;}else{p1->val=p2->val+p1->val+a;if(p1->val>=10){p1->val=p1->val%10;a=1;}else{a=0;}if(a){p1->next=&jinwei;jinwei.val=1;}return l1;}}

思路:
1.遍历两个链表,某个链表遍历完毕前对两个链表按节点相加,结果同时放入两个链表里
2.某个链表为空,进行分类讨论
3.同时为空时,判断是否进位,不进位直接返回一个链表,进位则加一个进位的节点后再返回
4.某一个为空时,判断不空的链表加上个节点的进位是否需要继续进位,若需要则继续运算进位+较长链表的进位节点,直到不需要进位为止。
此时可能出现两种情况:
①长链表遍历前就不用进位或遍历完毕最后一个节点不需要进位,此时直接返回长链表
②长链表遍历完毕仍需要进位,添加一个节点,之后返回链表

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

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

相关文章

效率翻倍!必备油猴脚本推荐

如题,介绍一些很厉害的油猴脚本。如题,介绍一些很厉害的油猴脚本。 ‍ 跳广告 广告屏蔽工具和视频网站,是在长期互相斗法的阶段。 道高一尺魔高一丈,很多广告屏蔽工具经常会失效,所以很多屏蔽规则经常要更新。 目前,很多屏蔽视频广告的扩展,都只能拦截广告,但广告时间还…

Mathematica 14.0软件下载与安装教程

标题:Mathematica 14.0软件下载与安装教程 安装包 扫描下方二维码关注「软知社」,后台回复【031】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程解压安装包文件,双击setup.exe安装,弹窗安装对话框默认中文,点击确定选择下一步选择安装路径,尽量不选C盘下…

Lingo 18下载与安装教程

标题:【Lingo 18下载与安装教程】 ‌Lingo 18是一款由LINDO Systems开发的强大的优化建模软件,主要用于求解线性和非线性优化问题‌。它支持多种优化建模类型,包括线性规划(LP)、非线性规划(NLP)、整数规划(IP)和混合整数规划(MIP)等,广泛应用于工程、经济、金融、…

单针探底量化策略最新改进,策略收益:2月份29%,年化43倍

单针探底量化策略最新改进 #最后修改时间 2025-2-7 15:55#作者:泰乐 微信、快手 同号: tailekanpan, QQ: 396068801#图形选股: 红中探底#红中探底,创20天新低,25日和60日均线向上,25日均价大于60日均价。#最新更新: 增加了国九避险。# 导入聚宽函数库 # 更新日志:…

Amos 28下载与安装教程

标题:Amos 28下载与安装教程 安装包 扫描下方二维码关注「软知社」,后台回复【028】三位数字即可免费获取分享链接,无广告拒绝套路; 1、安装教程双击安装,弹窗安装对话框点击下一步,选择I accept ,点击Next选择安装路径,建议安装C盘之外,选择完,点击Next点击Install…

No.24 CSS--雪碧图(Sprite,精灵图)

一、雪碧图CSS Sprite也叫CSS精灵图、CSS雪碧图,是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去。1.1优点减少图片的字节 减少网页的http请求,从而大大的提高页面的性能1.2原理通过background-image引入背景图片 通过background-p…

为什么低代码让开发者头疼?6 款好用工具推荐

许多开发者对低代码感到困惑——拖拽搭建真的高效吗?功能黑盒、扩展受限、难以集成,低代码的“易用性”常常并不如预期。本文深入分析低代码为何让开发者头疼,并推荐 6 款真正灵活、可扩展的工具,让你在低代码开发中少踩坑、高效构建应用。低代码开发平台近年来饱受争议。在…

海康威视400密码重置助手如何安装?附安装包

前言 大家好,我是小徐啊。我们在使用海康威视的摄像头的时候,有时候容易忘记设备的密码,导致我们无法访问对应的设备。这给我们的使用带来了不方便。好在海康威视提供了一个400密码重置助手,今天小徐就来介绍下如何安装400密码重置助手。文末附获取方式。 如何安装海康威视…

No.24 CSS--CSS3新特性(圆角、阴影、动画、媒体查询)

主要内容:圆角 阴影 动画一、圆角(border-radius)<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 50…

全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程序,新手也能快速上手!

大家好,我是狂师。 在当今数字化时代,智能客服已成为提升用户体验、提高运营效率的关键工具。 今天,我们将为大家带来一个超级简单的教程,教你如何在短短3分钟内,利用腾讯微搭平台,将满血 DeepSeek R1接入到微信、公众号、小程序,打造属于自己的 AI 智能客服,哪怕你是新…

20250228

1. PVC 谨慎多

7.5.1 训练深层网络

当网络很深的时候会出现下面的问题梯度消失是一般情况,所以上面讨论的是梯度消失的情况(每一层的梯度都很小,很多个很小的数相乘就会导致底部的层梯度比上面的层的梯度小);梯度爆炸是另外一回事 之所以会导致上面这种情况是因为不同层之间数据分布是有差别的。所以一个简单…