题目描述

给定两个代表非负数的链表,数字在链表中是反向存储的(链表头结点处的数字是个位数,第二个结点上的数字是百位数…),求这个两个数的和,结果也用链表表示。

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

输出:7 -> 0 -> 8

原因:243 + 564 = 807

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input : (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output : 7 -> 0 -> 8

解题思路

(1)建立一个新的链表,用于存放结果;

(2)设立一个临时变量 temp;

(3)把输入的两个链表从头往后同时处理,每两个对应位置相加,将结果存放于 temp;

(4)将 temp 对 10 取余,得到 temp 的个位数,存入链表中,并后移当前的链表节点;

(5)将 temp 对 10 求商,将结果作为进位的值(若大于10,则商为1,进位为1;若小于10,则商为0,不进位)。

注意

(1)在循环的过程中,需要考虑两个链表不等长的情况。

(2)需要考虑当两个链表都遍历到底(即都 == null),但若 temp = 1,即还需进位,则需要在进行一个循环,将 temp 的进位数加入链表末端。

代码实现

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {if (l1 == null) {return l2;}if (l2 == null) {return l1;}ListNode res = new ListNode(-1);ListNode cur = res;int temp = 0;while (l1 != null || l2 != null || temp != 0) {if (l1 != null) {temp += l1.val;l1 = l1.next;}if (l2 != null) {temp += l2.val;l2 = l2.next;}cur.next = new ListNode(temp % 10);cur = cur.next;temp = temp / 10;}return res.next;}
}

LeetCode(Java) 两数相加相关推荐

  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. 2021年春季学期-信号与系统-第四次作业参考答案-第七小题
  2. 专题解读 |「知识图谱」领域近期值得读的 6 篇顶会论文
  3. 等比数列和的快速求法
  4. xp java配置_WinXP系统Java配置环境变量的方法
  5. 为什么电脑不能打字_为什么不能用电脑验光仪测出来的度数直接配眼镜?
  6. 在有原来的数据的情况下,恢复数据库的数据
  7. innodb_file_per_table 理解
  8. 局域网内如何设置多个ip地址分配
  9. DPDK 框架原理简介(0001转)
  10. 试试Navicat和Axere RP Pro吧
  11. APNs Push Notification教程一
  12. java 图片滑动验证码_java实现图片滑动验证(包含前端代码)
  13. 音乐服务器 linux,Linux 下五个很酷的音乐播放器
  14. pytorch 介绍
  15. 【Hive】if函数用法
  16. 零基础如何入门激光SLAM
  17. c语言快排过程,快速排序(快排)C语言实现
  18. python——常用的数学计算公式
  19. 2022年ccpc威海站
  20. android 分享带图片的信息到彩信,微薄====

热门文章

  1. 计算机网络:Socket网络通信底层数据传输
  2. JVM 内存模型:运行时常量池
  3. 进程间的通信方式(二):管道Pipe和命令管道FIFO
  4. Confluence 6 复杂授权或性能问题
  5. 此三层非彼三层——MVCamp;UBD
  6. android 第三方登录 --- QQ
  7. (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义03--对象的生命周期--构造函数和析构函数...
  8. oracle从备份归档日志的方法集中回收
  9. struts2处理.do后缀的请求
  10. Android开发过程中在sh,py,mk文件中添加log信息的方法