题目
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
感觉这题有点难,第一感觉是采取暴力相加的方式。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
# 先把两个list取出来
list1 = []
list2 = []
while l1:
list1 .append(l1.val)
l1 = l1.next
# print(list1)
while l2:
list2.append(l2.val)
l2 = l2.next
# print(list2)
#把取出来的list变成数字
num1 = 0
num2 = 0
for i in range(len(list1)):
num1 += list1[i] * (10**i)
for j in range(len(list2)):
num2 += list2[j] * (10**j)
#把两个数字相加,倒序变成string格式,再存储成所需格式
sum = str(num1 + num2)[::-1]
result = head = ListNode(0)
for i in range(0, len(sum)):
head.next = ListNode(sum[i])
head = head.next
return result.next
···