没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
leetcode
question2
给定两个非空链表,表示两个非负整数,每位数字按照逆序存储,且每个节点存储一位数字,请将两数字相加,并
以相同形式返回(假设除了数字0之外,两个数都不会以0开头)
method
这道题目由于题目设置,大大降低了解题难度:(1)题目中给出的数字存储形式正好符合数学运算规则,即:先
加个位,然后再是十位,以此类推,链表的头节点以个位开头;(2)题目要求的返回同样是这样的,因此只需要
顺着链表进行相加即可
首先,新建一个链表,用来存储两个链表计算之后的结果,从头节点开始计算,按照数学运算的规则,各十百
千……运算过程中要注意,两个数字相加之后,对10求余,放在本位,对10求商放在进位上,这也是十进制数学运
算规则;
特殊情况需要注意一下:
(1)若l1为空,则返回l2;若l2为空,则返回l1(这就包含了l1和l2都空的情况了,因为l1空,则返回l2,此时l2也
空,那就是返回NULL)
(2)若l1比l2长,需要将l1的剩余位置添加到新链表中,注意不要忘记进位;若l2比l1长,需要将l2的剩余位置添
加到新链表中,不要忘记进位
(3)完成上述任务后,判断进位是否为1,若为1则将新链表的下一个结点设置成1(该情况是防止出现9+9999的
情况)
(4)返回新链表(Note:在设置新链表的时候,将头指针进行复制,方便这里返回)
classSolution(object):
defaddTwoNumbers(self,l1,l2):
ifl1isNone:
returnl2
ifl2isNone:
returnl1
pummy=ListNode(0)
p=pummy
carry=0
whilel1andl2:
p.next=ListNode((l1.val+l2.val+carry)%10)
carry=(l1.val+l2.val+carry)/10
p=p.next
l1=l1.next
l2=l2.next
ifl1:
whilel1:
p.next=ListNode((l1.val+carry)%10)
lgy_lgy_lgy_lgy
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0