You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
注:就是两个链表,每个链表代表一个数,如243,564,求和后逆置再形成链表。
解:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
l1_list = []
while l1:
l1_list.append(l1.val)
l1 = l1.next
l2_list = []
while l2:
l2_list.append(l2.val)
l2 = l2.next
l1_num = reduce(lambda x,y: x*10+y, l1_list)
l2_num = reduce(lambda x,y: x*10+y, l2_list)
result = l1_num + l2_num
temp = list(reversed(str(result)))
head = ListNode(temp[0])
next = head
for i in temp[1:]:
next.next = ListNode(i)
next = next.next
return head