1.题目

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

2. 代码

  • 函数
  1. 定义一个可随时增加的ListNode方法: (前提是struct中已经定义了该构造函数)
    ListNode *newListNode = new ListNode(n);
    curr -> next = new ListNode(m)
  • 核心思想
  1. 细节问题需要注意:
    1》最后返回的是newListNode->next; 因为返回的依然是倒序
    2》核心是sum+=count后创建新的ListNode的空间开辟 和 carry位的更新。 sum的重新定义为0
    3》最后别忘了万一出现新的进位时,carry = 1,再开辟新的
    4》p和q分开来加!!!!!!!!!!!!!!!!!!!!!!!!

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//第一步: 初始化数据ListNode* newListNode = new ListNode(-1);;ListNode* p = l1, *q = l2, *curr = newListNode;int carry = 0, sum = 0;//第二步: 通过逐位相加来得到结果while((q != NULL) || (p != NULL)) {sum = 0;                      //最重要的!!!! if( p != NULL ) {sum += p->val;p = p-> next;}if( q != NULL ) {sum += q->val;q = q -> next;}sum += carry;curr -> next = new ListNode(sum%10);curr = curr -> next;carry = sum >= 10 ? 1 : 0;       //是 >= 等于号别忘了}if (carry == 1) {curr -> next = new ListNode(1);}return newListNode->next;     //输出的不是curr的next}
};

LeetCode之两数相加相关推荐

  1. [链表遍历|模拟] leetcode 2 两数相加

    [链表遍历|模拟] leetcode 2 两数相加 1.题目 题目链接 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果 ...

  2. 20200114:(leetcode)两数相加

    两数相加 题目 主要思路 代码实现 题目 注意点:不以0开头 主要思路 逐个相加即可,注意需要逆序加,注意进位即可: 由于数字是个位数的,因此进位只有可能是0或者1: 注意定义的有参构造器. 代码实现 ...

  3. LeetCode 445. 两数相加 II(链表大数加法)

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

  4. LeetCode 2 两数相加

    给定两个非空链表来代表两个非负数,位数按照逆序方式存储,它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 - ...

  5. LeetCode 2 两数相加(链表)

    题目要求: 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入 ...

  6. LeetCode:2. 两数相加(中等)

    2. 两数相加(中等) 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 把俩个链表对应位相加,如果大于等于10,对10取余,小于10,直接得到这一位 解题过程存在这样几个问题: 1.进行循环 ...

  7. leetcode算法—两数相加 Add Two Numbers

    关注微信公众号:CodingTechWork,一起学习进步. 题目 Add Two Numbers: You are given two non-empty linked lists represen ...

  8. leetcode —— 2. 两数相加 (对于链表更新的细节)

    给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...

  9. leetcode 2. 两数相加

    难度:中等 频次:72 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的链表. ...

  10. 力扣(Leetcode)-2. 两数相加

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

最新文章

  1. 限制edit只能输入数字
  2. 多线程大文件断点续传和流媒体的处理方法
  3. vc++基于颜色直方图的图像检索,含代码
  4. arm-linux 交叉编译 mp4v2
  5. Mac生成ssh,并添加公钥到Github
  6. 【ES】ES 运用search_after来进行深度分页
  7. linux新建两个工作组,linux添加工作组
  8. Python练习之购物车
  9. Android中GridView实现互相添加和删除
  10. 【阅读理解】机器阅读理解方向有什么值得follow的大佬,网站等等?
  11. memcache的安装,配置和使用
  12. java开发冒险岛系统实训报告_2017级C语言大作业 - 小小冒险岛
  13. slickedit 设置
  14. 360Hbase二级索引
  15. 微软ime日文输入法每次切换英文和假名输入状态时,画面中央总有图片提示,怎么消掉
  16. 【IoT】战略:BEM 战略解码 - 好的战略需要好的执行
  17. 使用jQuery easyui和Springdata JPI进行数据的查询
  18. [VC] 冒号(:)与C/C++
  19. freecommander 快捷键列表 zz
  20. HDU 4602 Partition 规律题

热门文章

  1. What day is that day?(快速幂,打表找周期,或者求通项公式)
  2. C、C++ 学习经历
  3. 怎么用VC编程实现把用户名,密码提交到网页上并且实现登录?
  4. 毕业这几年的嵌入式开发之路
  5. 五岁的时候,你在干什么?
  6. 大数据——sqoop操作mysql和hive导出导入数据
  7. 台式计算机时间不准,每天开机电脑时间都不正确怎么办?试试这个办法!
  8. js 获得明天0点时间戳_js实现一个简单钟表动画(javascript+html5 canvas)
  9. 【Pytorch神经网络基础理论篇】 08 Softmax 回归 + 损失函数 + 图片分类数据集
  10. java 静态代码块_关于Java你不知道的那些事之代码块