问题简介:输入两个数字链表,输出求和后的链表(链表由数字位数倒序组成)

问题详解:

给定两个非空链表,表示两个非负整数. 数字以相反的顺序存储,每个节点包含一位数字.对两个整数作求和运算,将结果倒序作为链表输出.

举例:

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

输出: 6 -> 0 -> 7;

说明: 241 + 465 = 706.

链表结构:

Java 解法一:

官方实现 : Elementary Math

实现过程是差不多的,只是在定义x,y时的位置不一样.

复杂度分析:

时间复杂度 :近似于O(n):单层循环,由链表长度决定,近似于n次.

空间复杂度 :近似于 O(n):单层循环,新链表的长度最长近似于n.

拓展提问:

如果输入的链表是顺序存储的该怎么做?

举例:

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

输出: 7 -> 0 -> 6;

说明: 241 + 465 = 706.

注:

1.求单链表长度

2.数组和链表的关系:

数组:静态分配内存,在内存中连续,利用下标定位查询,时间复杂度为0(1),插入和删除的复杂度为o(n).

优点:查找速度快.

缺点:

1.可能浪费内存(因为是连续的,所以每次申请数组之前必须规定数组的大小,如果大小不合理,则可能会浪费内存);

2.内存空间要求高,必须有足够的连续内存空间;

3.数组大小固定,不能动态拓展.

链表:动态分配内存,内存不连续,链表定位元素时间是复杂度O(n),链表插入或删除元素的的时间复杂度O(1)。

优点:

1.插入删除速度快(通过next的指向可以方便的删除元素);

2.内存利用率高,基本不会浪费内存(可以使用内存中细小的不连续空间,并且在需要空间的时候才创建空间);

3.大小没有固定,拓展灵活.

缺点:

不能随机查找,通过遍历的方式查找,效率低.

小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海.

LeetCode Two Add Two Numbers (JAVA)的更多相关文章

  1. leetcode:283. Move Zeroes(Java)解答

    转载请注明出处:z_zhaojun的博客 原文地址:http://blog.csdn.net/u012975705/article/details/50493772 题目地址:https://leet ...

  2. LeetCode #002# Add Two Numbers(js描述)

    索引 思路1:基本加法规则 思路2:移花接木法... 问题描述:https://leetcode.com/problems/add-two-numbers/ 思路1:基本加法规则 根据小学学的基本加法 ...

  3. LeetCode 2 Add Two Numbers(链表操作)

    题目来源:https://leetcode.com/problems/add-two-numbers/ You are given two linked lists representing two ...

  4. leetcode 题解 Add Two Numbers(两个单链表求和)

    题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...

  5. [Leetcode] 2.Add Two Numbers(List To Long,模拟)

    本题题意是指将两个数倒序存储在链表中,再将两数之和同样存储在链表中输出. 我最开始的思路是将每一位相加,再考虑是否进位,但这时就需要考虑一些情况,比较麻烦. 于是我决定采取另一种在网上新学到的方法:这 ...

  6. LeetCode第151场周赛(Java)

    这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...

  7. LeetCode第152场周赛(Java)

    这算是我第一次正式参加 LeetCode 的周赛吧.通过两道题.意料之中(通过上次模拟可以看出来).总的来说,脑袋还是不太灵光.想的有点慢.全球第一名 0:10:19 就全部通过...感觉我的智商被狠 ...

  8. LeetCode 5198. 丑数 III(Java)容斥原理和二分查找

    题目链接:5198. 丑数 III 请你帮忙设计一个程序,用来找出第 n 个丑数. 丑数是可以被 a 或 b 或 c 整除的 正整数. 示例 1: 输入:n = 3, a = 2, b = 3, c ...

  9. LeetCode 2——两数相加(JAVA)

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

随机推荐

  1. PHP-FIG - PHP 标准规范

    转自:https://psr.phphub.org/ PHP 标准规范 PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 ...

  2. Go-day05

    今日概要: 1. 结构体和方法 2. 接口 一.go中的struct 1. 用来自定义复杂数据结构 2. struct里面可以包含多个字段(属性) 3. struct类型可以定义方法,注意和函数的区分 ...

  3. Intellij Idea识别Java Web项目

    使用maven生成一个Java项目,手动添加相应的web目录WEB_INF,web.xml等,此时idea没有自动识别为web项目,此时编辑web.xml文件会出现一些不该出现的错误,需要做的就是让i ...

  4. 完美解决distinct中使用多个字段的方法

    众所周知,distinct可以列出不重复的记录,对于单个字段来说distinct使用比较简单,但是对于多个字段来说,distinct使用起来会使人发狂.而且貌似也没有见到微软对distinct使用多字 ...

  5. STM32学习笔记:【004】USART串口通信

    版本:STM32F429 Hal库v1.10 串口通信能够实现两块电路之间不同的通信,在开发中作为打印调试也是一门利器(printf重定向). 补充一点小知识: 1. weak修饰符修饰的函数,说明这 ...

  6. SVN快速入门笔记【转】

    1. SVN版本控制软件目的 协作开发 远程开发 版本回退 2. 什么是SVN subVersion 支持平台操作 支持版本回退 3. 获取SVN软件 属于C/S结构软件(客户端与服务端) serve ...

  7. Golang入门教程(四)变量声明

    Go 语言变量名由字母.数字.下划线组成,其中首个字母不能为数字. 一.Go的语言结构 1.Go的语言基础部分由这几个部分组成 包声明 引入包 函数 变量 语句&表达式 注释 比如下面这个简单 ...

  8. MySQLMySql免安装版安装配置

    MySql免安装版安装配置,附MySQL服务无法启动解决方案 mysql 5.6.17 绿色版(免安装)安装配置教程 [mysql] # 设置mysql客户端默认字符集 default-charact ...

  9. asp.net mvc cshtml (VIEWS)中怎么提供URL参数:

    其实,没有必要,只要在view中这样获取就可以: <%=Html.ViewContext.RouteData.Values["id"]%> 就算没有id的参数也不会报错 ...

  10. Python中late-binding-closures

    2018-01-03 @望京 示例1 >>> b = [] >>> for i in range(5): ... b.append(lambda :i) ... & ...