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

LeetCode2.两数相加

题目链接:

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

分析:这个题目和之前所做的数组求和问题大同小异,只不过增加了链表的情景,需要大家考虑链表中可能出现的情况而已,有兴趣的同学可以先看这个链接,实现了二进制的模拟求和,这个熟练以后再来看链表场景下的,效果会更好。LeetCode67. 二进制求和-CSDN博客

算法思路:设置一个结果链表,然后我们遍历题目中给出的两个链表,每次从链表中取出结点然后求和,再将和存入到结果链表中。在两个链表其中一个结束以后,我们再判断另一个不为空的链表,同样重复这个过程直到链表循环结束。要注意的是最后要判断进位是否为1,如果为1还需要再插入一个结点表示进位的情况;同时为了方便,建议使用尾插法,这样可以一次性返回正确的结果。具体大家可以看参考代码,注释写的也比较详细了。

参考代码

class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* head=new ListNode(-1);//建立一个临时头结点 方便返回最后的结果ListNode* cur=head;//这里使用尾插法较好 可以直接返回正确结果 所以我们设置一个结点表示现在所到的位置int temp=0;//表示进位符的值while(l1&&l2){//开始遍历两个链表ListNode* p=new ListNode(-1);//新设置一个结点,存储该位求和的值并添加到结果链表中cur->next=p;cur=p;int a=l1->val,b=l2->val;//取出两个链表中的整数if(a+b+temp<10){//不存在进位的情况p->val=a+b+temp;temp=0;}else{//存在进位的情况p->val=(a+b+temp-10);temp=1;}l1=l1->next;//两个结点各自向后移动l2=l2->next;}//遍历结束后,可能存在两个链表中还有一个没有结束 所以我们继续遍历没有结束的那个while(l1){//遍历l1 思路同上ListNode* p=new ListNode(-1);cur->next=p;cur=p;int a=l1->val;if(a+temp<10){p->val=a+temp;temp=0;}else{p->val=(a+temp-10);temp=1;}l1=l1->next;}while(l2){//遍历l2 思路也同上ListNode* p=new ListNode(-1);cur->next=p;cur=p;int a=l2->val;if(a+temp<10){p->val=a+temp;temp=0;}else{p->val=(a+temp-10);temp=1;}l2=l2->next;}if(temp!=0){//两个链表都遍历结束后,还要继续判断进位是否为空,不为空则新开一位表示最高位的值ListNode* p=new ListNode(-1);cur->next=p;cur=p;p->val=1;}return head->next;//head为临时头结点,所以我们需要返回头结点的下一个结点}
};

相关文章:

  • nodejs安装配置
  • K-means聚类算法详细介绍
  • Vue.js - 计算属性与侦听器 【0基础向 Vue 基础学习】
  • 【驱动】RS485收发控制、自动收发电路及波特率限制
  • 介绍一下Lumina-T2X在哪些领域有应用
  • elementui中 表格使用树形数据且固定一列时展开子集移入时背景色不全问题(父级和子级所展示的字段是不一样的时候)
  • Rust后台管理系统Salvo-admin源码编译
  • 基于Fluent和深度学习算法驱动的流体力学计算与应用
  • 5.27周报
  • 【MySQL精通之路】数据类型
  • [转载]同一台电脑同时使用GitHub和GitLab
  • C++:vector基础讲解
  • 【ARMv8/v9 异常模型入门及渐进 10 -- WFI 与 WFE 使用详细介绍 1】
  • linux网卡MAC地址
  • 浅谈,Java当中普通类与抽象类的区别
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • ECMAScript入门(七)--Module语法
  • HomeBrew常规使用教程
  • HTTP请求重发
  • log4j2输出到kafka
  • Mithril.js 入门介绍
  • React16时代,该用什么姿势写 React ?
  • Sublime text 3 3103 注册码
  • V4L2视频输入框架概述
  • 检测对象或数组
  • 人脸识别最新开发经验demo
  • 使用common-codec进行md5加密
  • 微信开源mars源码分析1—上层samples分析
  • 用jquery写贪吃蛇
  • 原生js练习题---第五课
  • 主流的CSS水平和垂直居中技术大全
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • $L^p$ 调和函数恒为零
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4.10~4.16)
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (差分)胡桃爱原石
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (简单) HDU 2612 Find a way,BFS。
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (每日一问)基础知识:堆与栈的区别
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三)终结任务
  • (一)Linux+Windows下安装ffmpeg
  • (一)认识微服务
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET 8.0 发布到 IIS
  • .Net Core与存储过程(一)
  • .NET 分布式技术比较