2 Add Two Numbers
来源:互联网 发布:sql 查询分析器 编辑:程序博客网 时间:2024/06/08 10:22
2 Add Two Numbers
语言:java
题目:
即给定两个非负整数的链表,注意两个链表存放数是倒着存的。求出两数之和,并且以链表的形式输出。
考虑点:
- 1用两个链表存放两个数,每个节点存放数的每一位。
- 2当两个数等长时(即链表等长时),相加时注意保存进位,即进位要加在下一位两个数相加的结果上。
- 3 当两个数不等长时,和的高位结果即为不为空的数的高位。即将不为空的链表节点直接复制即可。
- 4 若最高位相加结果有进位,注意结果会多出一位,且该位值一定为1.
原始代码1
考虑的思路是:
* 1)两个链表是否为空,若不全为空,则进行相加计算。
* 2)若两个链表的当前节点不为空,则取数值,赋值为val1,val2;
* 3)和链表l3的节点值=(进位+val1+val2)%10,(相加结果大于10时,应该保留个位,十位作为进位)
* 4)如果此时两个链表还存在下一个节点,或者存在进位,那么和链表也会存在下一个节点,且下一个节点的值首先赋值为进位值。相反,如果两个链表都不存在下一个节点了,且没有进位了,那么和链表一定不存在下一个节点,则无需生成next节点。
* 结果:耗时61ms,超过30%的人。时间需要进一步优化。
优化代码
注意改进点:
1)将上一次进位保存后和当前链表节点的值相加
2)注意结果保存到写一个节点,也就是说链表的首节点为空。
3) 先将相加的结果放在下一个节点,再将指针移到下一个节点,这样避免了最后一位操作时,生成多余的节点。
* 结果:耗时54ms,打败65%左右,等待进一步优化
阅读全文
0 0
- 2 Add Two Numbers
- 2、Add Two Numbers
- 2、Add Two Numbers
- 2 Add Two Numbers
- 2Add Two Numbers
- #2 Add Two Numbers
- 2 - Add Two Numbers
- 2Add Two Numbers
- 2 Add Two Numbers
- 2 Add Two Numbers
- #2 Add Two Numbers
- 2 Add Two Numbers
- Add Two Numbers【2】
- 2、add two numbers
- 2、Add Two Numbers
- 2 - Add Two Numbers
- 2 Add Two Numbers
- 2 Add Two Numbers
- C++设计模式——Bridge模式
- 《面向对象程序设计-C++》学习笔记2
- ES的集群名字被谁改了?
- volley学习笔记四
- BZOJ 3262 陌上花开 树状数组套splay
- 2 Add Two Numbers
- 17.7.11 校内赛 【图论】【最大流】【SPFA】
- MySQL优化之expalin语句详解
- 一个细节问题:无法将类 com.tour.info.admin.service.TempService中的方法 indexZtemp应用到给定类型;
- 【二叉树】一棵树的子树是一颗树
- 《软件测试价值提升之路》学习之—测试工程师能力模型
- 道路和航路
- hadoop学习之hadoop完全分布式集群安装
- 小结(数组、循环)