首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LeetCode每日一练(两数之和)

题目如下: 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。...题目很好理解,就是给你两个链表,比如243和564,需要逆序得到链表所代表的的数值,分别是342和465,将这两个数相加,得到结果807,再逆序存回一个链表并返回。...题目表示链表的数字是按逆序方式存储的,这刚好给了我们一个便利的处理方式,我们可以同时遍历两个链表,并分别取出两个链表同一位置上的两个数值,相加后直接放到新创建的链表中,比如243和564链表: 由于数值是逆序存储...,所以链表的第一个元素其实是数值的最后一个数,将2和5相加得到7,故结果的最后一位数为7,再将其存入新的链表,作为第一个结点即可: 然后l1和l2后移一位: 该位置上的两个数相加结果为10...当然,我们还需要考虑两个链表不一样长的情况,比如: 对于这种情况,前面两个数的求法都是一样的,5加2等于7,存入新链表,6加4等于10,向前进1,将0存入新链表,此时l1、l2再后移,l1为空,但

21520

LeetCode题解-2.两数相加(C语言)

LeetCode题解-2.两数相加(C语言) 1.问题描述 给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。...请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。...对于长度短的数字进行补0,然后相加,将处理后的每一项插入结果链表。...1、创建结果链表 2、遍历给定的两个链表 3、取结点值进行相加,并记录进位值carry,注意短数补0 4、遍历结束后,判断进位是否大于0,是则插入结果列表 在实现该题过程中,借鉴了官方的题解,最终按着自己的理解写出该题...原因则是反复将后续结点插入结果链表的第二个节点位置。导致无法得出正确结果,提交错误。

30400
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    LeetCode题解002:两数相加

    两数相加 题目 给出两个 非空 的链表用来表示两个非负的整数。...其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 您可以假设除了数字 0 之外,这两个数都不会以...图1,对两数相加方法的可视化: 342 + 465 =807,每个结点都包含一个数字,并且数字按位逆序存储 算法 就像你在纸上计算两个数字的和那样,我们首先从最低有效位也就是列表 l1 和 l2 的表头开始相加...进位 carry必定是 0 或 1,这是因为两个数字相加(考虑到进位)可能出现的最大和为 9 + 9 + 1 =19 伪代码如下: 将当前结点初始化为返回列表的哑结点 将进位 carry初始化为...如果 p已经到达 l1的末尾,则将其值设置为 0 将 y 设为结点 q 的值。

    44720

    LeetCode-2 两数相加

    其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。...然后两个链表的对应位置上的数字相加,将相加的值保存到结果链表中。这里需要注意两个关键点:一是如果两个值相加大于9该怎么办?二是两个链表长度不一致该怎么办?...对于关键点二:我们以最长链表作为终点,对于较短链表对应位置的数值,我们用0来补齐。 下面分析一个具体实例,该实例包含上述两个关键点,如下图所示: ?...如上图所示,数字342的链表较短,数字7465的链表较长。当两个数字的第二个结点相加时,它们的和为10,这时就需要进位,即 carry=1,且将个位数保留作为结果链表的值。...= null){ // 判断该节点是否为空,当结点为空时,用0补齐; // 不为空时,加数即为节点的值 int d1 = (l1 == null) ?

    46640

    JavaScript 数据类型与运算符(上)

    布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假) undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值 null:表示空值,即此处的值为空...将一个变量赋值为undefined或null,老实说,语法效果几乎没区别。 三、加法运算符 加法运算符(+)是最常见的运算符,用来求两个数值的和。...true + true // 2 1 + true // 2 上面代码中,第一行是两个布尔值相加,第二行是数值与布尔值相加。这两种情况,布尔值都会自动转成数值,然后再相加。...比较特殊的是,如果是两个字符串相加,这时加法运算符会变成连接运算符,返回一个新的字符串,将两个原字符串连接在一起。...它们的作用是将运算子首先转为数值,然后加上1或者减去1。它们会修改原始变量。

    32250

    数据类型

    数据类型就是数据的类别型号。比如姓名“张三”,年龄18,这些数据的类型是不一样的。 1.2 变量的数据类型 变量是用来存储值的所在处,他们由名字和数据类型。...变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中去。JavaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。...a = null;声明了变量a 为空值 null 2.2 数字型Number JavaScript数字类型既可以用来保存整数值,也可以保存小数(浮点数)。...world // 2.数值字符串“相加” alert('100' + '100');//100100 // 3.数值字符串+数值 alert('11' + 12);//1112 +号总结口诀:数值相加...将string类型转换为数值型 Number('12') js隐式转换(- * /) 利用算术运算隐式转换为数值型 '12'-0 var age = prompt('请输入你的年龄');

    1.1K10

    LeetCode-2-两数相加

    # LeetCode-2-两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。...如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。...: 两个链表长度一致 两个链表长度一长一短 两个链表在相加过程中产生进位,进位需要加在下一位 特例判断,当l1为空,直接返回l2;当l2为空,直接返回l1 新增l1,l2的指针t1,t2,方便链表的遍历...;新增l3哑结点和对应指针t3,用于存储相加之后的链表 相加流程: 当两个链表其中一个不为空的时候,说明还没有加完; 由于相加的过程中,链表会出现一长一短的情况,所以在其中一个链表遍历完成之后,他的next...就为空了,没有val值 我们可以将后续空的链表的值默认为0,这样在相加的时候就不会对后续没有遍历完的链表产生影响 所以对于t1,t2两个链表而言,他们的当前节点值是多少,可以由如下判断: int x =

    20320

    两数相加

    两数相加 题目描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。...如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。...示意图 对两数相加的可视化:342 + 465 = 807,每个结点都包含一个数字,并且数字按位逆序存储。 就像在纸上计算两个数字一样,首先从最低有效位也就是 链表 l1 和 l2 的头部开始相加。...例如 5 + 6 = 11,这种情况下,我们将当前位的数值设置为 2,并将进位 carry = 1 带入下一次迭代。...,carry = Math.floor(sum / 10); 创建一个数值为 sum % 10 的新节点,并将其设置为当前节点的下一个节点,并且将当前节点前进到下一个节点 同时,将 p 和 q 前进到下一个节点

    96120

    数据测试方法

    数据不多:一般是检查全表数据、重要枚举值,看数据有没有多余、重复或者数据主键是否唯一。 数据不少:一般是检查全表数据、重要字段(比如主键字段、枚举值、日期等),看字段的数值是否为空、为null等。...可见数据完整性和业务本身关联度没有那么密切,更多的是数仓表的通用内容校验。所以从一些基础维度,我们可以将测试重点拆成表级别、字段级别两个方向。...非空判断:保证重要字段非空,防止空数据造成和表join之后数据丢失,导致最终统计数据偏少。...给每项规则进行等级划分,比如表的主键不唯一,记为critical。String类型字段的空值比例大于70%,记为warning。...2)指标的统计口径处理 数据指标的统计涉及到两个基本概念: 可累加指标:比如支付金额,浏览量等,可以通过简单数值相加来进行统计的指标,针对这类指标,sql中使用的函数一般是sum。

    1.1K41

    【C++】STL 算法 - transform 变换算法 ( transform 函数原型 | 将 一个 或 两个 输入容器 中的元素 变换后 存储到 输出容器 中 )

    算法函数原型 2 - 将 两个输入容器 中的元素 变换后 存储到 输出容器 中 3、transform 算法源码分析 一、transform 算法 1、transform 算法简介 std::transform...1 - 将 一个输入容器 中的元素 变换后 存储到 输出容器 中 transform 算法函数原型 : 下面的函数原型作用是 将 一个输入容器 中的元素 变换后 存储到 输出容器 中 ; template...根据 输入元素 的 范围确定 , transform 会将 变换结果存储到 输出容器中 ; UnaryOperation unary_op 参数 : 一元函数对象 , 将输入容器 的 每个元素 输入到该...transform 算法函数原型 2 - 将 两个输入容器 中的元素 变换后 存储到 输出容器 中 transform 算法函数原型 : 下面的函数原型作用是 将 两个输入容器 中的元素 变换后 存储到...一元函数对象 : 接受一个参数 , 也就是来自第一个输入序列的元素 , 并返回转换后的值 ; 二元函数对象 : 接受两个参数 , 第一个参数是 来自第一个输入序列的元素 , 第二个参数是 第二个输入序列的元素

    72210

    数仓链路保障体系与数据测试方法经验分享(好文收藏)

    数据不多:一般是检查全表数据、重要枚举值,看数据有没有多余、重复或者数据主键是否唯一。 数据不少:一般是检查全表数据、重要字段(比如主键字段、枚举值、日期等),看字段的数值是否为空、为null等。...可见数据完整性和业务本身关联度没有那么密切,更多的是数仓表的通用内容校验。所以从一些基础维度,我们可以将测试重点拆成表级别、字段级别两个方向。...非空判断:保证重要字段非空,防止空数据造成和表join之后数据丢失,导致最终统计数据偏少。...给每项规则进行等级划分,比如表的主键不唯一,记为critical。String类型字段的空值比例大于70%,记为warning。...2)指标的统计口径处理 数据指标的统计涉及到两个基本概念: 可累加指标:比如支付金额,浏览量等,可以通过简单数值相加来进行统计的指标,针对这类指标,sql中使用的函数一般是sum。

    1.6K10

    字节码执行引擎

    在方法执行时,虚拟机使用局部变量表完成参数值到参数变量列表的传递过程。...操作数栈可以存储任意的Java数据类型。当一个方法刚开始执行的时候,这个方法的操作数栈是空的,在方法执行的过程中,会有各种字节码指令往操作数栈中写入和提取内容,也就是出栈和入栈操作。...下面我们看一下如果在Java中执行两个int类型数据的相加,那么操作数栈是怎么处理的。首先需要将两个int类型的数据执行入栈操作,并且保证,这两个int类型数据必须最接近栈顶。...当执行这个相加指令时,会将这两个int类型数据进行出栈相加,然后将相加后的结果在执行入栈操作。...操作数栈中的数据类型必须与字节码指令匹配,就像上述说明中的相加操作,因为我们执行的是int类型的相加操作,所以在执行时,最接近栈顶的两个数据类型必须是int类型,不能出现一个long和一个float相加的情况

    58120

    JS算法探险之整数

    导致在学习过程中,遇到了不小的阻力。 同时,由于JS自身的一些特性,导致在实现一些在其他语言看似常规操作的问题上,需要绕很多路。所以,在看这些书籍和资料的时候,需要有一个转换过程。...假设除数不能为0 2.只能存储 32 位有符号整数,其数值范围是 [−231, 231−1] 示例:输入:-15和2 输出:-7 ❞ 分析: 从提示可知,此题中,值的范围是[−231, 231−1]...在进行十进制加法操作时候,总是将两个数的「右端对齐」,然后从它们的个位开始「从右向左相加同一位置的两个数」。如果前一位置有进位,还要加上进位。...可以将这两个问题,「归并」为一类问题:「N进制大数相加」 Talk is cheap,show your the code function Nsum(a,b,n){ let result =...我们可以将数组中的所有数字的同一位置相加。

    2.1K10

    preview和response的值不一样

    后又将两个返回值和数据库里面的数据做了比对,同样发现 response 的值和后端数据库存储的是一样的。 也就是说 response 的值是对的,preview 的值是错的。...三、Javascript 数值存储 Javascript 采用的是双精度浮点数存储的,每个数字占 8 个字节,即 64 个bit。...四、0.1+0.2问题 javascript 数值计算有一个很经典的问题,0.1+0.2 === 0.30000000000000004,其底层原因就是前面的双精度浮点数存储导致的。...3)javascript 的数值存储是有精度限制的,即最多52位有效小数,1入0舍,对0.1和0.2分别进行了数值取舍。 经过一番精度截取之后再计算就导致了 0.1+0.2 != 0.3 了。...超过 2^53-1 之后的数被称为不安全的数,因为此后只要指数相同,并且尾数前 52 位相同,则这个两个数数值相同(因为 52位之后的数被丢弃了)。

    5K41

    【打卡贴】(No.002)从零开始刷LeetCode

    ---- NO.2两数相加 原题: 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。...图1,对两数相加方法的可视化: 342+465=807342 + 465 = 807342+465=807, 每个结点都包含一个数字,并且数字按位逆序存储。...算法 就像你在纸上计算两个数字的和那样,我们首先从最低有效位也就是列表 l1l1l1 和 l2l2l2 的表头开始相加。...将 yyy 设为结点 qqq 的值。如果 qqq 已经到达 l2l2l2 的末尾,则将其值设置为 000。...创建一个数值为 (sum mod 10)(sum \bmod 10)(summod10) 的新结点,并将其设置为当前结点的下一个结点,然后将当前结点前进到下一个结点

    46550

    阿里一面-给我挖了几个陷阱。。

    这次面试让我意识到了一些常见的陷阱。尤其是在数值计算方面,计算机处理浮点数时可能会出现精度问题,导致结果不完全符合预期。 同时,在面试过程中,对于基本的语法和概念的掌握也是至关重要的。...计算机在内部以二进制形式存储浮点数,而不是以十进制形式。 由于有限的存储空间和表示精度,某些十进制数可能无法精确地表示为二进制浮点数,从而导致小的舍入误差。...因此,即使最终结果赋值给了long类型的变量,但是计算过程中仍然会使用int类型进行计算,这可能导致结果溢出。...System.out.println('H' + 'a');:这里使用的是字符相加操作符+,它会将字符的Unicode值相加。...所以,这段代码的输出是: Ha 169 需要注意的是,字符相加操作并不会直接拼接字符,而是对字符的Unicode值进行数值相加。

    8310

    LeetCode 上第一题和第二题你会讲么?

    问题如下: 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。...但是后来发现这么做是不对的,应该先定义一条新的链表按节点来逐个存储两条链表相加的值,最后将这条新的链表返回。...创建一条新的链表,设置两个头指针current和result,在两条链表相加的过程中只移动current指针,result指针不移动,最后将result返回。...两条链表节点的值在相加时会有进位的情况,因此要进位的数与不进位的数(即剩余的数)进行获取和存储,因此再定义用来存储需要进位的int类型的变量total和存储不需要进位的数值的int类型变量remainder...,将两个变量的初值均定义为0。

    40620

    Redis源码学习之压缩列表

    ,表示压缩列表的节点个数(空列表是0),由于只有两个字节的空间,所以最大只能存储到65535,如果节点数大于65535,那么只能遍历整个列表求长度了,复杂度将从O(1)升至O(N); 最后的一个字节作为表尾标志位...所以,一个空列表在存储器中是这样分布的: 这里的一个小方格代表1个字节,我们可以看到指针p指向压缩列表头部,将zltail中的值取出来与p相加就是尾节点了,由于目前是空列表,所以指向的是zlend。...其中,当存入的节点数值在[0,12]这个区间时,直接将该值融合到这一个字节的后4位,也就不需要content部分了。...所以这也是为什么压缩列表更适合存储数值较小的节点了。...,因为内存分配的复杂度是O(n),那么发生级联更新将导致该插入操作的复杂度达到O(n^2)。

    57100
    领券