1.题目描述
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
2.示例
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
3.题目解答(图片源自leecode)
①链表:
class Solution(object):
def addTwoNumbers(self, l1, l2):
dummy = p = ListNode(None)
s = 0
while l1 or l2 or s != 0:
s += (l1.val if l1 else 0) + (l2.val if l2 else 0)
p.next = ListNode(s % 10)
p = p.next
if l1: l1 = l1.next
if l2: l2 = l2.next
s = s // 10
return dummy.next
②非链表:
l1 = list(map(int,input("l1 = ").split(',')))
l2 = list(map(int,input("l2 = ").split(',')))
answer = []
//列表化整
def func_a(list):
sum_list = 0
list_len = len(list)
for i in range(list_len):
sum_list = sum_list + list[i] * pow(10, i)
return sum_list
//相加并进入新数组
def Sum_12(a,b):
sum_12 = func_a(a) + func_a(b)
result = list(map(int,str(sum_12)))
result_len = len(result)
for i in range(result_len - 1, -1, -1):
answer.append(result[i])
return answer
print(Sum_12(l1, l2))