发现做的题难度始终不高,今天Leecode给了一个稍微难一点的题目。(前两天没更是因为去拔牙了~~>_<~~)

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。

你可以假设除了数字 0 之外,这两个数字都不会以零开头

示例1:

输入:l1 = [7,2,4,3], l2 = [5,6,4]
输出:[7,8,0,7]

示例2:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[8,0,7]

示例3:

输入:l1 = [0], l2 = [0]
输出:[0]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/add-two-numbers-ii

该问题本质是链表加法问题,它实现了将两个链表表示的数字相加的功能。具体解决方法如下:

首先创建两个空向量L1L2,用于存储链表中的数字。然后通过遍历链表,将链表中的数字依次存入相应的向量中。

接下来,代码获取了两个向量的大小,并创建一些变量来辅助计算;然后,根据两个向量的大小关系,分别处理不同的情况:

  • 如果L1的大小大于等于L2的大小,那么从右向左遍历两个向量,并进行加法运算:如果两个数字相加结果大于等于10,则需要进位。代码通过创建新节点,并将其连到结果链表的头部,来表示相加的结果;
  • 如果L2的大小小于L1的大小,先按上面的方法处理L2长度的部分;接着,处理在L1中剩余的数字。对于像L2中没有的部分,只需要对数字进行加法运算,并进行进位处理;最后,如果最高位的计算结果有进位,需要创建一个新节点来表示进位的结果。
  • 如果L2的大小大于L1的大小,那么处理方式与上述相同,只是将L1L2的角色互换。最后,将结果链表返回。

整体上,解决方案实现了链表加法的功能,通过遍历链表中的数字,进行逐位相加,并处理进位的情况,最终得到新链表表示的相加结果。代码如下:

/*** 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) {vector<int> L1,L2;if(l1==NULL) return l2;if(l2==NULL) return l1;while(l1!=NULL){L1.push_back(l1->val);l1=l1->next;}while(l2!=NULL){L2.push_back(l2->val);l2=l2->next;}int size1=L1.size();int size2=L2.size();ListNode* L,*temp;if(size1>=size2){int flag=0,offset=size1-size2,num;L=NULL;for(int i=size2-1;i>=0;i--){num=L1[i+offset]+L2[i]+flag;if(num>=10){num-=10;flag=1;}else flag=0;temp=new ListNode;temp->val=num;temp->next=L;L=temp;}for(int i=offset-1;i>=0;i--){num=L1[i]+flag;if(num>=10){num-=10;flag=1;}else flag=0;temp=new ListNode;temp->val=num;temp->next=L;L=temp;}if(flag==1){temp=new ListNode;temp->val=1;temp->next=L;L=temp;}}else{int flag=0,offset=size2-size1,num;L=NULL;for(int i=size1-1;i>=0;i--){num=L2[i+offset]+L1[i]+flag;if(num>=10){num-=10;flag=1;}else flag=0;temp=new ListNode;temp->val=num;temp->next=L;L=temp;}for(int i=offset-1;i>=0;i--){num=L2[i]+flag;if(num>=10){num-=10;flag=1;}else flag=0;temp=new ListNode;temp->val=num;temp->next=L;L=temp;}if(flag==1){temp=new ListNode;temp->val=1;temp->next=L;L=temp;}}return L;}
};

匆忙结束~拜拜~

力扣每日一题——两数相加II相关推荐

  1. 力扣第454题.四数相加II(JavaScript)

    首先定义 一个map,key放a和b两数之和,value 放a和b两数之和出现的次数. 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中. 定义变量count,用来统计 a+b+c ...

  2. 力扣热门100题——两数之和(最全解法)

    1.两数之和 1.问题描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 你可以假设每种输入只会对应一 ...

  3. leetcode算法题--两数相加 II

    原题链接:https://leetcode-cn.com/problems/add-two-numbers-ii/ 栈 ListNode* addTwoNumbers(ListNode* l1, Li ...

  4. 【JAVA】交错字符串——力扣每日一题(六)(2020.07.18)

    目录 题目:97. 交错字符串 思路 如果你从本文中学习到丝毫知识,那么请您点点关注.点赞.评论和收藏 大家好,我是爱做梦的鱼,我是东北大学大数据实验班大三的小菜鸡,非常渴望优秀,羡慕优秀的人,个人博 ...

  5. 【爬虫】力扣每日一题每天自动邮件提醒!!!

    使用python实现了一个力扣每日一题每天自动邮件提醒的小爬虫,小但实用!!! 文章目录 A.需求来源与分析 B.技术角度分析 C.具体分析步骤 1.接口协议分析 2.发邮件 3.写crontab放服 ...

  6. LeetCode题库第2题 两数相加

    两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...

  7. leetcode 力扣每日一题系列详解——总目录

    这是总目录,该系列持续更新中........ leetcode 力扣每日一题系列详解--总目录

  8. 445. 两数相加 II golang

    题目 两数相加 II 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零 ...

  9. leetcode-445. 两数相加 II

    给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储一位数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶: 如 ...

最新文章

  1. python卸载opencv_怎么为python安装新版的opencv模块-百度经验
  2. frontpage 编辑html 乱码,在 FrontPage 2003 中编辑 PHP 及乱码问题
  3. Conan and Agasa play a Card Game
  4. wxWidgets:wxAuiManagerEvent类用法
  5. java 父子线程 调用链_ZipKin原理学习--Zipkin多线程及线程池中追踪一致性问题解决...
  6. 暴风集团冯鑫被批捕:涉嫌对非国家工作人员行贿罪、职务侵占罪
  7. Ubuntu 18.04环境下Django的安装配置图文详解
  8. 从“运维”处谈OFO失败
  9. 关键词文章自动生成工具-关键词组合工具-关键词文章采集工具
  10. iOS 将PCM格式转换为WAV格式 播放wav音频或者直接播放pcm文件
  11. android面试基础总结
  12. 滴滴估值630亿美元开启新一轮融资,2021年前上市;索信达新三板退市后二次“流血”冲击香港IPO;蜻蜓FM COO肖轶离职...
  13. 分期付款“名义利率”和“实际利率”的公式及其套路
  14. 计算机的设备驱动程序在哪里查看,什么是驱动程序?如何查看电脑的驱动程序?看下面的文章就明白了...
  15. 附加题——求n的阶乘和
  16. 记录舒马赫告别F1车坛(转载)
  17. python怎么关闭浏览器_/python里webbrowser怎么关闭游览器
  18. nodejs uuid 生成
  19. EXCEL 数据分析基础知识
  20. 农场渲染文件服务器搭建,【渲染农场】如何搭建工作室小规模gpu渲染农场

热门文章

  1. python推送企业微信机器人2-markdown类型
  2. 使用opengles绘制灰度地形图
  3. 学摄影:五步入门黑白摄影
  4. lr最新版本2021破解版-lr最新版破解版下载 附各个平台安装包
  5. text的竖排和横排
  6. 微信小程序rpx与px如何换算
  7. java词法分析器 c语言_Java编写的C语言词法分析器
  8. FastReport单元格合并
  9. insert键与delete键重合了(笔记本)】:如何点击insert?
  10. 如何成长为一名合格的架构师?