1.题目描述

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

2. 思路及代码

  1. 一开始我固定思维模式,觉得数一定要是高位到低位的排序模式,再从个位开始取。但是由于是单链表,就算逆置链表以后,找到链表最后一个节点,再找导数第二个相加的结点也不现实。
  2. 后来我发现题目还省力了,低位刚好在链表头,所以可以直接从链表头开始遍历,依次取两个数相加,取这个数的个位数,保存进位位,留给下一组相加的数,这就类似于大数阶乘的思想了。
  3. 容易出错的地方在于两个链表都遍历完后,可能还有一个进位位,因此需要再申请一个新的链表结点,值为1。

c++代码如下:

/*** 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* l3=new ListNode(0);//最终返回的链表ListNode* cur=l3;ListNode *p1 = l1;ListNode *p2 = l2;//链表元素相加int cin = 0;//进位位int sum=0;while(p1||p2){sum=0;if(p1){sum+=p1->val;p1=p1->next;}if(p2){sum+=p2->val;p2=p2->next;}int res=(sum+cin)%10;//取个位数字cin=(sum+cin)/10;cur->next= new ListNode(res);cur=cur->next;}//最后还有一个进位没加进去if(cin==1){cur->next=new ListNode(1);}return l3->next;//;l3是val为0的头结点,记得返回第一个结点}
};

C++力扣2--两数相加(思路及代码)相关推荐

  1. (补)算法训练第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和

    代码随想录算法训练营第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和 454.四数相加II 题目链接:四数相加II 参考:https://programmerc ...

  2. 力扣 167. 两数之和 II - 输入有序数组

    167. 两数之和 II - 输入有序数组 给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数 ...

  3. leetcode力扣454. 四数相加 II

    给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 为了使问题简单化,所有的 A ...

  4. 力扣1. 两数之和(哈希表,JavaScript)

    var twoSum = function(nums, target) {let map=new Map()for(let x=0;x<nums.length;x++){if(map.has(t ...

  5. 两数相加——哈希表算法

    力扣刷题总结 一.前言 二.两数相加 1.题意 2.示例 3.题目解析 4.官方题解 思路分析 哈希表算法的优势: 思路及算法: 代码分析 C语言代码实现及详细注释说明: python代码实现及详细注 ...

  6. LeetCode 01两数之和02两数相加

    力扣 LeetCode01两数之和 LeetCode02两数之加 前言:第一次LeetCode打卡题解,前面组织的打卡活动从今天开始正式开始了,很多csdn和公众号小伙伴以及加入了,欢迎加入!详细看力 ...

  7. 力扣 两数相加 C语言 题解

    ** 力扣 两数相加 C语言 题解 ** 文章目录 力扣 两数相加 C语言 题解 一.完整题目 二.解题思路 二.编写代码 四.测评结果 五.总结评价 一.完整题目 给你两个非空的链表,表示两个非负的 ...

  8. 力扣刷题-单链表两数相加

    分区:链表 2.两数相加 题目描述: 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表 ...

  9. 两数相加【力扣:中等难度】

    title: 两数相加[力扣:中等难度] tags: LeetCode 题目 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. ...

最新文章

  1. 形态学滤波:腐蚀与膨胀(浅谈)
  2. 全球人脸识别精度一年提高75.6%,拉动全球安防市场超高增长
  3. Docker多阶段镜像构建Dockerfile脚本示例:构建nodejs前端项目
  4. 对DotNet分布式应用搭建的考虑(引用)
  5. mysql主从复制之异常解决--- Slave_IO_Running: NO
  6. /* program p5_04_AC 《聪明人的游戏提高篇》 1307:【例1.3】高精度乘法
  7. 22.Windows及linux下gerapy使用
  8. JQuery怎么知道一个元素是否隐藏或显示How do you test if something is hidden in jQuery?
  9. Modern CMake 翻译 2.1 变量和缓存
  10. 服务器迁入虚拟主机的好处,服务器迁入虚拟主机的好处
  11. 船说CMS小说采集-船说小说免费采集-船说CMS自动采集发布方法详解
  12. Ti_ccs_2.0
  13. 微信小程序发布流程(上传审核)
  14. Python实现PU口袋活动更新提醒
  15. 根据输入的公历日期获取阴历节日与公历节日(亲测可用)
  16. Python实现PDF转换为TXT
  17. wxpython 下拉列表的实现
  18. 什么是mvc,mvc有什么用?
  19. 【C语言实用库】cJSON-解析json数据的利器
  20. 中文乱码与字体库windows

热门文章

  1. 使用VLC旋转视频90度
  2. pr新建的字幕和老字幕保持一样的参数设置
  3. java图书馆管理系统源代码,HR的话扎心了
  4. html怎么水平居中垂直居中,css水平居中和垂直居中的几种解决方案
  5. 微信预约小程序怎么制作(在线预约小程序系统开发功能)
  6. 单片机--4个数码管循环显示数字
  7. opython3l下载_python3下载远程代码并执行
  8. 加州大学圣塔芭芭拉分校计算机排名,加州大学圣塔芭芭拉分校在美国的排名是多少?...
  9. 苹果财报即将发布,还有多少坏消息来袭?
  10. HDU 5115 M - Dire Wolf 【区间dp】