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

LeetCode题解-2.相加C语言

LeetCode题解-2.相加C语言) 1.问题描述 给你个非空 的链表,表示个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。...请你将个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这个数都不会以 0 开头。...:[0] 示例 3: 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1] 2.解题思路 在逆序的列表中,每一项直接相加就是该位的值...对于长度短的数字进行补0,然后相加,将处理后的每一项插入结果链表。...1、创建结果链表 2、遍历给定的个链表 3、取结点值进行相加,并记录进位值carry,注意短补0 4、遍历结束后,判断进位是否大于0,是则插入结果列表 在实现该题过程中,借鉴了官方的题解,最终按着自己的理解写出该题

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

    C语言每日一题(37)相加

    力扣网 2 相加 题目描述 给你个 非空 的链表,表示个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。...请你将个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这个数都不会以 0 开头。...思路分析 最基本的思路,就是将俩链表转正过来,相加后再进行逆序,实现是可以实现,但时间复杂度太高了,此外这里相加还涉及到进位的问题,这样做会很麻烦。...换一种思路,我们直接在现成的个链表上操作,可以看到,相加后逆过来的值刚好就是对应的个结点的相加,那我们可以直接遍历个链表,将对应的值相加,并存放到新的结点里。...需要注意的事项: 1.这里会涉及到进位的问题,我们可以将相加后的值/10得到进位值(大于10的进位值为1,小于10的进位值为0)每次相加时加上进位值即可。

    12810

    相加

    给你个 非空 的链表,表示个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将个数相加,并以相同形式返回一个表示和的链表。...先将l1和l2头节点的值加起来赋值给新链表的头节点 遍历个链表,只要有一个链表还没有遍历到末尾,就继续遍历 2.每次遍历生成一个当前节点cur的下一个节点,其值为链表对应节点的和再加上当前节点cur...=NULL,那么p1=l1->next,否则就说明l1位少,需要补上0 //p1=l1->next是对l1链表的每个节点进行遍历,获得当前节点上的数字 p1 = p1->next !...//这里还要加上cur指向当前节点的val值/10,是因为 //例如:第一个个整数个位相加得到的val=12,那么此时要进位,这里是尾插法,cur的next新节点存放的值是十位的值,因此12...output(head->next); cout val ; } 加法模板 当前位 = (A 的当前位 + B 的当前位 + 进位carry) % 10 注意,AB都加完后

    74610

    相加

    相加 题目描述 给出个 非空 的链表用来表示个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。...如果,我们将这个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这个数都不会以 0 开头。...解题方法 方法:初等数学 使用变量来跟踪进位,并从包含最低有效位的表头开始模拟逐位相加的过程。 ?...示意图 对相加的可视化:342 + 465 = 807,每个结点都包含一个数字,并且数字按位逆序存储。 就像在纸上计算个数字一样,首先从最低有效位也就是 链表 l1 和 l2 的头部开始相加。...进位 carry 必定是0或1,这是因为个数字相加(考虑到进位)可能出现的最大和为 9 + 9 + 1 = 19。

    95420

    C语言每日一题(47)相加II

    力扣 445 相加II 题目描述 给你个 非空 链表来代表个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这相加会返回一个新的链表。...你可以假设除了数字 0 之外,这个数字都不会以零开头。...示例3: 输入:l1 = [0], l2 = [0] 输出:[0] 提示: 链表的长度范围为 [1, 100] 0 <= node.val <= 9 输入数据保证链表代表的数字无前导 0 思路分析 和相加比起来...,这道题的难点在于它不是逆序的而是正序的,这意味着你不能直接在个链表上进行操作,但可以逆转链表再进行操作,但这样工作量就会很大了,还容易出错。...我做题做了很久,发现一般跟逆序有关系的基本上都可以栈进行解决,毫无疑问,这里也可以。

    9510

    链表-相加

    问题 给出个非空的链表用来表示个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这个数相加起来,则会返回一个新的链表来表示它们的和。...下面我们开始进入编程思路,首先声明一个链表 type ListNode struct { Next *ListNode Val int } 我们想到链表相加不太友好,而且考虑到个链表长度不一样呢...个三位相加(999+999 = 1998),最大是4位,所以新数组的长度永远比原来数组的长度大1就可以,看代码: func sumArray(array1 []int, array2 []int)...[]int { //新的数组(长度为原数组长度+1,因为个三位相加的和可能是4位) result := make([]int,len(array1)+1) //temp变量是新数组的下标...从解法一我们得知是从链表头部开始相加,所得结果最后作为新链表的头部,如果大于10,则向上进一位,在创建新链表下一个节点时把进上来的值加上,依次直到个链表的节点都为空,基于这个我们考虑能不能用递归呢?

    70630

    LeetCode相加

    ” image.png 早晨起床第一步,打开电脑LeetCode,今天给大家带来的是LeetCode的第二题相加: image.png 首先看看题目难度中等,接着几个特殊的关键字出现在眼帘,...非空,逆序,一位这几个关键字顾名思义很容易理解,但是题目中有个字链表顿时一脸懵。...然而链表的灵活性在于它的每个元素节点分为部分,一部分是存储元素本身,另一部分是指向下一个节点元素的引用,也可以称为指针,当你要插入数据时,把上一个节点的向下指针指向新数据节点,新数据节点的向下指针指向原有数据...image.png 还有一个比较形象的图片 image.png 更多的关于链表的知识详见链表如此简单[2]和单向链表[3]篇文章 言归正传,首先分析题目,我们画一个简单的图形: image.png...l1和l2的每一个节点相加的和得到一个新的,组合成一个新的链表,如果相加的和大于10的倍数上后一位对应的进位。

    43920

    【LeetCode】相加

    如果,我们将这个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字0之外,这个数都不会以0开头。...,它们各自的位数是按照逆序方式存储的,例如:(2 -> 4 -> 3)代表整数342,(5 -> 6 -> 4)则代表整数465,相加的结果自然是807,这就是我们要给出的答案,但是要用链表的形式返回...乍眼一看,很简单啊,不就是把个数相加嘛,我先把它整成整数,然后相加,最后把结果整成链表,完美,哈哈哈哈,简直被自己的聪明才智给折服。...逼我绝招,是时候祭出我的BigInteger了。...常规解法 既然邪门歪道走不通,那就还是常规操作来解决吧,仔细想想,其实也很简单,我们从个链表的头节点开始,一起遍历,将相加得到的结果存入新的链表中即可。 ?

    62530

    LeetCode 01之和&02相加

    LeetCode01之和 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 个 整数,并返回他们的数组下标。...因为如果从的特性来看: 是一对形式出现的 一对有前后位置之分,在遍历到前的时候不一定会找到后面的元素,但是遍历到后面的元素前面一定被我们存储了。 ?...} else { map.put(nums[i], i); } } return a; } LeetCode02之加...如果,我们将这个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这个数都不会以 0 开头。...所谓加法的运算规则:从个数的最低位进行计算,进行到下一位的时候需要考虑进位问题。一直到最后,而本题所给的链表刚好可以用来直接计算,因为链表头都是数字最低位可以直接相加,然后一直遍历到结束。

    40520

    【leetcode算法-相加

    1、给出个 非空 的链表用来表示个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。...如果,我们将这个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这个数都不会以 0 开头。...2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 解法: 分析:我们使用变量来跟踪进位,并从包含最低有效位的表头开始模拟逐位相加的过程...就相当于你在纸上面计算的和那样,我们首先从最低有效位也就是列表的 l1 和 l2 的表头开始相加。分析题目给出的,每位数字都应当处于0-9的范围内,我们计算个数字的和时可能会出现“溢出”。...进位carry必定是0或者1,因为个10以内相加,绝壁小于20,即使在加上carry,比如 9+9+1 = 19,是不会超过20的。

    47720
    领券