题目:
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807.
答案(Python):
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
self.l1 = l1
self.l2 = l2
p1 = l1
p2 = l2
D = 0
C = 0
add_result = []
###计算,结果存进列表
while (p1 != None) | (p2 != None):
if (p1 != None) & (p2 != None):
result = p1.val + p2.val + C
if (p1.next != None) & (p2.next != None):
p1 = p1.next
p2 = p2.next
elif (p1.next != None) & (p2.next == None):
p1 = p1.next
p2 = None
elif (p1.next == None) & (p2.next != None):
p1 = None
p2 = p2.next
else:
p1 = None
p2 = None
elif (p1 != None) & (p2 == None):
result = p1.val + C
if (p1.next != None) :
p1 = p1.next
p2 = None
else:
p1 = None
p2 = None
else:
result = p2.val + C
if (p2.next != None) :
p2 = p2.next
p1 = None
else:
p1 = None
p2 = None
D = result % 10 ###求余数求本位
C = result // 10 ###求商求进位
print(D)
add_result.append(D)
if C!= 0: ###终极进位
add_result.append(C)
print(add_result)
##生成结果链表 !!!!
resultSize = len(add_result)
head = ListNode(add_result[0])
P = head
if resultSize > 1:
for i in range(1,resultSize):
P.next = ListNode(add_result[i])
P = P.next
return(head)