
题目:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
思路:对两个链表的每个元素相加,如果小于10,则放在此位置上上,否则吧余数存储起来放在下一位上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
class : def addTwoNumbers(self, l1, l2): """利用carry,余数和商的关系 :type l1: ListNode :type l2: ListNode :rtype: ListNode """ carry = 0 sum_list = node = ListNode(0) while l1 or l2 or carry: if l1: l1_val = l1.val else: l1_val = 0 if l2: l2_val = l2.val else: l2_val = 0 cur_node = ListNode((l1_val + l2_val + carry) % 10) carry = (l1_val + l2_val + carry)//10 node.next = cur_node node = node.next l1 = l1.next if l1 else l1 l2 = l2.next if l2 else l2 return sum_list.next
|
例子:
1 2 3 4 5
|
# 首先创建2个链表,再调用函数 node1 = Solution1().creat_ll([3,4,5]) node2 = Solution1().creat_ll([4,5,6]) a = Solution1().addTwoNumbers1(l1 = node1,l2=node2) print_ll(a)
|
近期评论