栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leedcode两数相加的个人理解思考

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leedcode两数相加的个人理解思考

leedcode两数相加的个人理解思考

对于单向链表:
	因为单向链表是不可逆的,所以需要考虑指针的所在位置,按照一般逻辑一直往后加会导致无法复原,找不到头指针那么得到的链表也就完全找不到了。保留头部指针是非常关键的。
	拆分方法从而复用是很好地习惯,不仅让代码整洁,方便debug,而且可以省去很多写重复代码的时间。
	通过浅拷贝可以让工具指针实例去遍历主指针的所有内容,非常好用。

解题思路是,首先创建一个初始化的结果指针,然后不动他,在创建一个工具人指针指向结果指针的next,通过对工具人指针的利用,不断拓展结果指针的链条。
对于输入的两个链表l1 ,l2, 需要将他们往后遍历,直到两个指针都为空运算结束。
把l1, l2所在位置的值加起来,需要进一位的先把他暂时放在结果指针的尾部,在下一步操作的时候再一起加起来。
int类型数据是不能为null的,所以说需要额外去判断,如果为空那么值应该是0.
如果其中有一个链表已经到底而另一个没到,那么就不能把他的指针再往后指,否则会报错,可以用判断让他到底后往后移位。
先做所在位数的运算还是先做下一位数的进制很重要,否则会出现9999999+999 运算出现错误。一定要逻辑来。
由于每次只能知道两位数的值,所以遍历的话不能先去考虑链表尾带0的情况。或者可以先遍历两个链表,确定最高位所在下标后有目的地去操作?确实会是个更好的办法。
如果像我一样用笨方法,那么需要写一个反转的方法,我使用的是递归的思想先把链表拆解再从最后往前拼,但是很麻烦,需要用到全局变量不然难以传参。
在反转后再把指针一直移到非0的位。其中需要判断是不是到了只剩下一位的情况,有可能结果是000000,不考虑的话会出现空指针没有next的报错。

做得少,走了很多弯路,算法思路也不够清晰,但是解题过程比较专注冷静,很享受这种感觉,开了一个好头。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号