Leetcode2. 两数相加(Medium)附思考方法以及小收获 ALG

题目描述

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
在这里插入图片描述
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的思路

先来说说总体思路吧,我想的是直接使用链表的操作进行求和sum,如果sum >= 10,就把其中一个链表的next的值+1(因为每个结点的值都只有一位数字所以加起来最多是18,所以传到下一个的时候值+1 就可以啦),需要注意的是可能中途一个链表没有值了,那这个时候就把值的链表的val设置为0
对啦while循环的时候一定要设置循环条件呀 我怕忘记加条件了怀疑人生…( _ _)ノ|
我按照这个思路提交了结果可想而知在这里插入图片描述

这是我错误的代码:写完跑测试案例的时候我还信誓旦旦的真是一言难尽呀

在这里插入图片描述
经过我的仔细检查发现n1 和 n2 并没有使用,问题来了,使用n1 和 n2那我的ln.next.val还怎么设置?下图是我的错误修改之一,就在我找不到怎么改这个问题的时候我发现了最开始设置more。,我想到了最开始为什么要初始化这个变量,于是我换了思路在这里插入图片描述
我将sum的值设为n1 + n2 + more(more = sum/10),初始化more = 0,完美的解决了进一的问题
执行测试案例时发现少了一个节点在这里插入图片描述
Oh,原来是我没有最后一个进一又添加了如下代码在这里插入图片描述
最后完美解决在这里插入图片描述

总结与收获
  1. 知识
    本题发现了链表操作的薄弱,削微的总结了一丢丢,新建链表要有头尾指针,插入节点时在head!=null的前提下通过修改tail指针进行单链表的插入
  2. 思维:考虑问题要全面哈
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值