问题描述:
给定两个链表,计算出链表对应位置相加的和,如果和大于10要往后进位。用链表返回结果。其实上是一种大数加法。可以把一个大数倒着写存入链表,然后两个链表相加就是所需要的大数相加的和
输入
2 -> 3 -> 5
3-> 4 -> 6
输出
5->7->1->1
Python实现的代码
Class addtwonums(object):
Def teonum(self, l1,l2):
Root=n = ListNode(0)
Carrey = 0
While l1 or l2 or carrey:
If l1:
num1 = l1.val
L1 =l1.next
If l2:
Num2 = l2.val
L2 =l2.next
Carrey, val = divmod(num1+num2+carrey, 10)
N.next = ListNode(val)
N = n.next
Return root.next
思考与总结
1.Python中的divmod(a, b)函数,它会返回两个值,第一个值是a//b的值,第二个值是a%b的值,也就是说前者是a除以b的整数部分,后者是a除以b的余数部分
2.python中构建链表的方法:python中没有想c中直接的链表,你需要多大的空间,不需要自己预先设定,只要在定义好的链表后面加上你想要的ListNode(val)就行
比如:
a = b = ListNode(0) #表示a, b 指向一个值为0的链表节点
B.next = ListNode(5) #表示b的下一个节点指向值为5的链表节点
B = b.next
return a
此时会返回 0 -> 5