题目链接:https://leetcode-cn.com/problems/add-two-numbers/

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

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

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

考查单链表反转

/*** 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) {int sum, one = 0;ListNode *nextNode = NULL;while(l1 != NULL || l2 != NULL){if(l1 != NULL && l2 != NULL){sum = l1->val + l2->val + one;one = sum/10;ListNode *newNode = new ListNode(sum%10);newNode->next = nextNode;nextNode = newNode;l1 = l1->next;l2 = l2->next;}else if(l1 != NULL && l2 == NULL){sum = l1->val + one;one = sum/10;ListNode *newNode = new ListNode(sum%10);newNode->next = nextNode;nextNode = newNode;l1 = l1->next;}else{sum = l2->val + one;one = sum/10;ListNode *newNode = new ListNode(sum%10);newNode->next = nextNode;nextNode = newNode;l2 = l2->next;}}if(one != 0){ListNode *newNode = new ListNode(1);newNode->next = nextNode;nextNode = newNode;}return reverseList(nextNode);}ListNode* reverseList(ListNode *cur){if(cur->next == NULL)return cur;ListNode *prevNode = NULL, *nextNode = cur->next;while(cur != NULL && cur->next != NULL){cur->next = prevNode;prevNode = cur;cur = nextNode;nextNode = nextNode->next;}cur->next = prevNode;return cur;//反转链表后的新的头结点}
};
class Solution { // 2020.10.4
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {int carry = 0, sum;ListNode* newhead = NULL, *prev = NULL;while(l1 || l2 || carry){sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + carry;ListNode* node = new ListNode(sum%10);carry = sum/10;if(l1)l1 = l1->next;if(l2)l2 = l2->next;if(!newhead){newhead = node;prev = node;}else{prev->next = node;prev = node;}}return newhead;}
};

40 ms 69.8 MB

LeetCode 2. 两数相加(单链表反转)相关推荐

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

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

  2. 20200114:(leetcode)两数相加

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

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

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

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

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

  5. LeetCode 2 两数相加

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

  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】两数相加(链表)

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

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

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

最新文章

  1. mysql 1115_从ADS1115 Python向MySQL插入数据
  2. Android 进程间通信 实例分析
  3. Java学习之do-while-if语句实操
  4. PagedList.Mvc只有一行时不显示分页
  5. listview刷新,延迟加载,用单行刷新取代notifyDataSetChanged
  6. python基础(part7)--容器类型之列表
  7. 网络查找文档比自己电脑上还方便?
  8. 华为Mate30系列诠释真旗舰:9月26日在国内正式发布
  9. 一文详解 Java 的几把 JVM 级锁
  10. bzoj 2179: FFT快速傅立叶 -- FFT
  11. 如何给网站添加支付宝支付功能
  12. 磕碰,擦伤了,紧急处理方法
  13. 零点和极点到底影响了什么?什么是最小相位系统?
  14. 机器翻译领域最重要的论文和学术文献目录清单(清华大学NLP组)
  15. 怎么删除一个圆或者图形的一部分
  16. yyyy/MM/dd转换成yyyy-MM-dd,yyyy-MM-dd转换成yyyy/MM/dd你会了吗
  17. 生产者与消费者的实现
  18. HTML部分基础语法
  19. Linux下的多线程編程
  20. 生产者和消费者问题(单一生产者和单一消费者)

热门文章

  1. 怎么卸载apowerrec_如何删除windows10自带应用
  2. 高版本号chrome安装flashplayer debuger后无法使用的问题
  3. 基于ArcEngine与C#的鹰眼地图实现
  4. Galaxy s4怎么安装一个预装软件的签名不一致的新版本
  5. VS2008制作安装包
  6. java并发编程实战阅读总结(b)
  7. 我和蓝牙BT,BLE有一腿
  8. Linux shell sed awk
  9. http 请求默认时间_JMeter接口测试之HTTP请求默认值
  10. 创建线程的方式_创建线程有几种不同的方式?