221. 链表求和 II
假定用一个链表表示两个数,其中每个节点仅包含一个数字。假设这两个数的数字顺序
排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式。
样例
给出 6->1->7
+ 2->9->5
。即,617 + 295
。
返回 9->1->2
。即,912
。
实现思路:
求出两个链表所代表的数字的和,然后将和转换成链表
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param l1: The first list.
@param l2: The second list.
@return: the sum list of l1 and l2.
"""
def addLists2(self, l1, l2):
# write your code here
#首先求出两个链表的大小
l1_sum, l2_sum = 0, 0
l1_cur, l2_cur = l1, l2
while l1_cur:
l1_sum = l1_sum * 10 + l1_cur.val
l1_cur = l1_cur.next
while l2_cur:
l2_sum = l2_sum * 10 + l2_cur.val
l2_cur = l2_cur.next
res = l1_sum + l2_sum
if res == 0:
return ListNode(0)
#将和转换成链表
dummy = ListNode(0)
pre = dummy
while res > 0:
tmp = ListNode(res % 10)
tmp.next = pre.next
pre.next = tmp
res = res // 10
return dummy.next