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

【力扣专题栏】两数相加,如何实现存储在链表中的整数相加?

在这里插入图片描述

题解目录

  • 1、题目描述+解释
    • 2、算法原理解析
      • 3、代码编写(原始版本)
      • 4、代码编写(优化版本)

1、题目描述+解释

在这里插入图片描述
在这里插入图片描述

2、算法原理解析

在这里插入图片描述

3、代码编写(原始版本)

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//创建新链表,有头结点的。ListNode* new_head=new ListNode(0);ListNode* ptail=new ListNode(0);//使用两个指针分别指向两个链表的头结点ListNode* cur1=l1;ListNode* cur2=l2;int t=0;//记录相加后的数字int num=0;//记录个位;while(cur1&&cur2){t=t+cur1->val+cur2->val;//取出个位num=t%10;//插入到新节点后面if(new_head->next==nullptr){ListNode* newNode=new ListNode(num);new_head->next=newNode;ptail=newNode;}else{ListNode* newNode=new ListNode(num);ptail->next=newNode;ptail=newNode;}t/=10;cur1=cur1->next;cur2=cur2->next;}//判断是哪个先走完if(cur1==nullptr){//把cur2的后面加入while(cur2){t=t+cur2->val;num=t%10;ListNode* newNode=new ListNode(num);ptail->next=newNode;ptail=newNode;t/=10;cur2=cur2->next;}}if(cur2==nullptr){//把cur1的后面加入while(cur1){t=t+cur1->val;num=t%10;ListNode* newNode=new ListNode(num);ptail->next=newNode;ptail=newNode;t/=10;cur1=cur1->next;}}//判断t是否为0if(t){ListNode* newNode=new ListNode(t);ptail->next=newNode;ptail=newNode;}return new_head->next;}
};

4、代码编写(优化版本)

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* NewHead=new ListNode(0);ListNode* Ptail=NewHead;ListNode* cur1=l1;ListNode* cur2=l2;int t=0;while(cur1||cur2||t)//都为假,才跳出循环{if(cur1){t+=cur1->val;cur1=cur1->next;}if(cur2){t+=cur2->val;cur2=cur2->next;}Ptail->next=new ListNode(t%10);Ptail=Ptail->next;t/=10;}//释放资源Ptail=NewHead->next;delete NewHead;return Ptail;}
};
http://www.lryc.cn/news/470562.html

相关文章:

  • SOLID - 接口隔离原则(Interface Segregation Principle)
  • arrylist怎么让他变得不可修改
  • SpringMVC实战(3):拓展
  • Vue应用中使用xlsx库实现Excel文件导出的完整指南
  • 【数据分析】Power BI的使用教程
  • 融合ASPICE与敏捷开发:探索汽车软件开发的最佳实践
  • 后台管理系统的通用权限解决方案(三)SpringBoot整合Knife4j生成接口文档
  • 保研考研机试攻略:python笔记(1)
  • 在浏览器中运行 Puppeteer:解锁新能力
  • Kafka消费者故障,出现活锁问题如何解决?
  • pytorch 交叉熵损失函数 BCELoss
  • 【进阶】面向对象之接口(多学三招)
  • linux上trace code的几种方法
  • 文件操作(1) —— 文件基础知识
  • 4K双模显示器7款评测报告
  • 2024.10.24华为(留学生)笔试题解
  • 基于neo4j的医疗问诊系统
  • java :String 类
  • 关于非中文或者url文本不换行的问题
  • LeetCode 热题 100之矩阵
  • YOlO系列——yolo v3
  • 基于Datawhale开源量化投资学习指南(11):LightGBM在量化选股中的优化与实战
  • Python4
  • springboot系列--web相关知识探索六
  • FreeSWITCH 简单图形化界面30 - 使用MYODBC时可能遇到的错误
  • 阿里云物联网的通信方式
  • 自由职业者的一天:作为小游戏开发者的真实工作日记
  • 【RL Latest Tech】分层强化学习:Option-Critic架构算法
  • 分布式数据库
  • MySQL(2)【库的操作】