题目描述

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

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

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

解题思路

由于两数相加可能有进位,所以在相加时既要考虑上一位的进位,又要传递给下一位计算时的进位,用递归来求解,具体可分为以下几种情况:

  • 当两个链表均不为空时,计算两个节点值与上一位进位的和sum,取sum的个位数构建新节点,更新进位为sum的十位数,令本节点的next指针指向下一位求和返回的节点
  • 当两个链表其中一个为空时,计算不为空的节点值与上一位进位的和sum,更新进位为sum的十位数。若进位不为0,取sum的个位数构建新节点,令本节点的next指针指向下一位求和返回的节点,注意只传递不为空的链表;若进位为0,则直接更新不为空节点的值为sum,此时此链表之后的所有高位值都不会更新,因此返回此节点
  • 若两个链表都为空,判断进位是否为0.若进位为0,直接返回NULL;否则构建值为进位值的新节点,并返回此结点

代码

 /**
* 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) {
return addNum(l1, l2, );
}
ListNode* addNum(ListNode* l1, ListNode* l2, int add){
if(l1 && l2){
int sum = add + l1->val +l2->val;
add = sum/;
ListNode* res = new ListNode(sum%);
res->next = addNum(l1->next, l2->next, add);
return res;
}
else if(l1){
int sum = l1->val + add;
add = sum/;
if(add){
ListNode* res = new ListNode(sum%);
res->next = addNum(l1->next, l2, add);
return res;
}
else{
l1->val = sum;
return l1;
}
}
else if(l2){
int sum = l2->val + add;
add = sum/;
if(add){
ListNode* res = new ListNode(sum%);
res->next = addNum(l1, l2->next, add);
return res;
}
else{
l2->val = sum;
return l2;
}
}
else{
if(add){
ListNode* res = new ListNode(add);
return res;
}
else return NULL;
}
}
};

LeetCode 2. 两数相加(Add Two Numbers)的更多相关文章

  1. LeetCode 2. 两数相加(Add Two Numbers)

    2. 两数相加 2. Add Two Numbers 题目描述 You are given two non-empty linked lists representing two non-negati ...

  2. [Swift]LeetCode2. 两数相加 | Add Two Numbers

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  3. LeetCode 2:两数相加 Add Two Numbers

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

  4. 链表两数相加(add two numbers)

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

  5. 2.两数相加(Add Two Numbers) C++

    第一想法是顺着题目的原因,将两链表分别转化为一个数字,再将数字相加,然后把结果转化为字符串,存到答案链表中.但是数据太大会溢出! 所以,要在计算一对数字的过程当中直接存储一个结果,注意结果大于9时进位 ...

  6. LeetCode 445. 两数相加 II(Add Two Numbers II)

    445. 两数相加 II 445. Add Two Numbers II 题目描述 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个 ...

  7. Leetcode 002. 两数相加

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

  8. LeetCode 445——两数相加 II

    1. 题目 2. 解答 2.1 方法一 在 LeetCode 206--反转链表 和 LeetCode 2--两数相加 的基础上,先对两个链表进行反转,然后求出和后再进行反转即可. /** * Def ...

  9. 【LeetCode】两数相加

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

随机推荐

  1. Charles学习(四)之使用Map local代理本地静态资源以及配置移动端代理在真机上调试iOS和Android客户端

    前言 问题一:我们在App内嵌H5开发的过程中,肯定会遇到一个问题就是我不想在chrome的控制台中调试也不想在模拟器中调试,我想要在真机上调试,那么如何解决这个问题呢? 问题二:我们期待调试时达到的 ...

  2. pytorch中torch.narrow()函数

    torch.narrow(input, dim, start, length) → Tensor Returns a new tensor that is a narrowed version of  ...

  3. dubbo-admin监控搭建2.6.0版本

    首先介绍一下dubbo的一个比较大的改变,那就是在2.6.1及2.6.1以后的版本当中,dubbo将一分为二,分为Dubbo-RPC和Dubbo-Admin,而在2.6.1以前的版本中Dubbo-Ad ...

  4. contenteditable兼容问题

    正常情况下用contenteditable,IE下有兼容性问题需要将个别字母变成大写的contentEditable. 获取contenteditable的内容 对html进行处理 兼容 chrome ...

  5. 实验吧flag整理

    奇怪的短信 flagissimple 围在栅栏里的爱ILOVESHIYANBAR. 古典密码flag:CTF{COULDYOUEXCHANGETHEINFORMATION} The Flash-14F ...

  6. jieba:我虽然结巴,但是我会分词啊

    介绍 jieba目前是一款比较好分词模块 分词 import jieba # 可以使用jieba.cut进行分词 sentence = "失去恋人所带来的苦痛远远超过了他的承受范围" ...

  7. osworkflow 入门基础2

    [quote]前篇我引入了互联网上找来的一篇文章,接着上篇讲:osworkflow 工作流是非常轻量级的,虽然2006就停止活动了,互联网上的资料也不是很多,官网也没过多的说明,比起jbpm 和act ...

  8. 架构师成长之路5.1-Saltstack安装及入门

    点击架构师成长之路 架构师成长之路5.1-Saltstack安装及入门 (安装.配置.启动) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需 ...

  9. PAT Basic 1013 数素数 (20 分)

    令 P​i​​ 表示第 i 个素数.现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输 ...

  10. [牛客] [#1108 J] [树形结构] 买一送一

    2019牛客国庆集训派对day3 链接:https://ac.nowcoder.com/acm/contest/1108/J来源:牛客网 题意 ICPCCamp 有 n 个商店,用 $1,2,..., ...