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

链表-2.两数相加-力扣(LeetCode)

一、题目解析

1、对逆序存储的数字求和,返回一个同样逆序的链表

2、不会出现先导0的情况

二、算法原理

解法:模拟两数相加的过程

定义一个变量t记录每一位之和,按照两数相加的过程,t=2+5,new 一个ListNode(t%10),这里7%10=7,t/=10进位操作,然后继续进行下去

哨兵位头节点和tail节点

为了避免边界条件的判断和操作遍历,我们会创建一个newhead的哨兵位头节点,该节点并不存储任何有限数据,仅做哨兵标记处理;由于返回逆序结果,我们需要多次对链表进行尾插操作,所以我们定义tail节点用于标记链表中最后一个节点,节约从头遍历找尾的时间

遍历边界条件

由于无法保证两个链表长度一致,所以会出现一个链表遍历完了,但另一个却没有遍历完的情况,需要特殊处理

检查记录每位之和变量t

存在两个链表都遍历完了,但是由于循环条件的设置,导致t中的进位情况没有处理完,所以需要在返回结果之前,检查t是否未0,不未0则需要new ListNode(t),然后接到tail节点的后面,最终返回newhead->next即可,我们返回的逆序和链表不包括哨兵位头节点

对于链表操作模糊的读者可以移步博主的另一篇博客

数据结构之单链表-CSDN博客or带头双向循环单链表-CSDN博客

三、代码示例

class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2){ListNode* newhead = new ListNode();ListNode* tail = newhead; ListNode* cur1 = l1;ListNode* cur2 = l2;int t = 0;while(cur1!=nullptr||cur2!=nullptr){if(cur1 == nullptr){t+=cur2->val;cur2 = cur2->next;}else if(cur2 == nullptr){t+=cur1->val;cur1 = cur1->next;}else{t+=cur1->val;t+=cur2->val;cur1=cur1->next;cur2=cur2->next;}ListNode* newnode = new ListNode(t%10);t/=10;tail->next = newnode;tail=tail->next;}if(t!=0){ListNode* newnode = new ListNode(t);tail->next = newnode;}return newhead->next;   }
};

看到最后,如果对您有所帮助,还请点赞、收藏和关注,我们下期再见!

http://www.dtcms.com/a/338475.html

相关文章:

  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day7
  • Java开发面试实战:Spring Boot微服务与数据库优化案例分析
  • 微服务如何集成swagger3
  • Leetcode70爬楼梯
  • CF思维训练回顾
  • 摄像头模块在运动相机中的应用
  • 【Linux】文件系统
  • 【基础-判断】用户在长视频、短视频、直播、通话、会议、拍摄类应用等场景下,可以采用悬停适配在折叠屏半折态时,上屏进行浏览下屏进行交互操作
  • 工业相机基本知识解读:像元、帧率、数据接口等
  • ABAP - 会计凭证行项目文本和抬头文本增强
  • ios使用saveVideoToPhotosAlbum 保存视频失败提示 invalid video
  • [Polly智能维护网络] 弹性管道 | 弹性管道构建器 | new | Add | .Build()
  • PIX2SEQ: A LANGUAGE MODELING FRAMEWORK FOR OBJECT DETECTION
  • MongoDB从入门到精通:
  • 【LeetCode】17. 电话号码的字母组合
  • SpreadJS 协同服务器 MongoDB 数据库适配支持
  • [系统架构设计师]云原生架构设计理论与实践(十四)
  • flink+clinkhouse安装部署
  • 【数据结构】二叉树-堆(深入学习 )
  • Flink原理与实践 · 第三章总结
  • Jenkins项目发布基础
  • 代码随想录算法训练营四十六天|图论part04
  • CSS封装大屏自定义组件(标签线)
  • 在python中等号左边的都是对象,在matlab中等号a = 3+2 a就是个变量
  • 关系型数据库与非关系型数据库
  • 用户认证技术
  • 【笔记】扩散模型(一一):Stable Diffusion XL 理论与实现
  • 力扣hot100:盛最多水的容器:双指针法高效求解最大容量问题(11)
  • [NSSCTF 2022 Spring Recruit]rrrsssaaa
  • 94、23种设计模式之工厂方法模式(3/23)