1.题目描述(中等难度)

2.解法1(模拟整数加法)

思路:由于两个链表存储数字的方式是相同的。

我们只需在遍历两个链表的同时将链表对应位置结点存储的数值直接相加即可。

在相加的过程中有可能产生进位,需要设置一个变量carry处理进位的情况。

图示:

代码:

class Solution {public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode * head = nullptr;ListNode * tail = nullptr;int carry = 0;while(l1 || l2){int n1 = l1?l1->val:0;int n2 = l2?l2->val:0;int sum = n1 + n2 + carry;if(!head)head = tail = new ListNode(sum % 10);else{tail->next = new ListNode(sum %10);tail = tail->next; }carry = sum / 10;if(l1) l1 = l1->next;if(l2) l2 = l2->next;}if(carry) tail->next = new ListNode(carry);return head;
};
};

时间复杂度:O(max(m,n)),m 和 n 代表 l1 和 l2 的长度。

空间复杂度:O(max(m,n)),m 和 n 代表 l1 和 l2 的长度。而其实新的 List 最大长度是 O(max(m,n))+ 1,因为我们的 head 没有存储值所以忽略不计了。

3.扩展与提高

如果链表存储数字的顺序颠倒该如何解决?

思路:先将链表反转过来在进行相加操作。

这篇文章分别对链表反转的迭代和递归两种操作进行了详细讲解。

链接: 反转链表讲解

建议:阅读完反转链表的博客可以直接刷下leetcode206看看效果。

2.两数相加(leetcode-2)相关推荐

  1. 两数之和,两数相加(leetcode)

    我们都知道算法是程序员成长重要的一环,怎么才能提高算法呢, 出来在网上看视频之外,动手练习是非常重要的.leetcode 就是一个非常好的锻炼平台. 1. 两数之和,在 leetcode 里面是属于 ...

  2. python两个数相加时_两数相加 leetcode Python

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

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

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

  4. LeetCode实战:两数相加

    题目英文 You are given two non-empty linked lists representing two non-negative integers. The digits are ...

  5. 【前端来刷LeetCode】两数之和与两数相加

    大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...

  6. leetcode第一题两数相加

    leetcode两数相加: 提示: 问题描述: int* twoSum(int* nums, int numsSize, int target, int* returnSize) {for (int ...

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

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

  8. LeetCode题库整理【Java】—— 2 两数相加

    LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...

  9. 【LeetCode】【HOT 100】2. 两数相加

    [LeetCode][HOT 100]2. 两数相加 文章目录 [LeetCode][HOT 100]2. 两数相加 package hot;import java.util.Arrays;class ...

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

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

最新文章

  1. 正则表达式中的\.表示什么意思
  2. 结合案例深入解析:抽象工厂模式
  3. boost::hana::partition用法的测试程序
  4. 【前端必备】七、页面性能优化
  5. Patrick Hughes - 错觉3D雕塑艺术
  6. ie6的png24问题
  7. 农村人深加工红薯,一招增值数倍,机器一条龙操作省人力
  8. 16家企业、11个领域……京东首开AI加速器,拜倒,拜倒!
  9. IP反向解析查询的方法
  10. petalinux(3)——创建APP
  11. 信佛的人对佛教的诘问
  12. 求职路要敢于学习亮剑精神
  13. 一文教你学会使用GitHub!(附视频)
  14. 软件测试入门全流程精华总结【必看 知识点很全】
  15. excel冻结窗口怎么设置_excel打印区域怎么设置?excel表格打印区域怎么设置?
  16. 网页采集工具-免费网页采集工具大全
  17. OLED显示与LCD显示的区别
  18. element blur事件去触发一个方法
  19. 2020年3月22日总结
  20. Lecture 22

热门文章

  1. System Center Data Protection Manager 2007之一安装
  2. socket简介 - 获取简单网页内容
  3. 项目管理(二)责任划分
  4. cab文件打包的ActiveX控件(转)
  5. springMVC 理解大综合
  6. hibernate 实现数据库查询
  7. Angular 2 Decorators - 2
  8. 实现发送邮件动态html内容的几种思路
  9. 关于个人博客的相关内容
  10. hdu 2037 这个夏天不AC (java)