add 2 nums

问题描述:

给定两个链表,计算出链表对应位置相加的和,如果和大于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

posted @ 2018-05-03 20:25  findtruth123  阅读(188)  评论(0编辑  收藏  举报