【Leetcode】No.2 两数相加(链表)
作者:互联网
文章参考了Leetcode中评论和题解,实现方法用Python3
题目描述:
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储以为数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示他们的和。
您可以假设除了数字0之外,这两个数都不会以0开头。
实例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 0 -> 8
原因:342 + 465 = 807
这个题是简单的链表问题。代码如下
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
result = ListNode(0)
carry = 0
sum = 0
result_point = result
sum = 0
result_point = result
while (l1 or l2):
if l1 is not None:
num1 = l1.val
else:
num1 = 0
if l2 is not None:
num2 = l2.val
else:
num2 = 0
sum = carry+ num1+ num2
carry = sum // 10
sum = sum % 10
result_point.next = ListNode(sum)
result_point = result_point.next
if(l1!= None):
l1 = l1.next
if(l2!=None):
l2 = l2.next
if carry >0:
result_point.next = ListNode(1)
return result.next
其中,节点的代码块如下:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
将数按逆序转换成链表模式如下(自己写的不知是否有错)
def transfer(num):
re = num%10
node = ListNode(0)
xx = node
while re :
re = num %10
num = num//10
xx.next = ListNode(re)
xx = xx.next
return node.next
python中 // 表示整除,代码的实现思想是加法的步骤,实现的结果是用时96ms,消耗内存14MB。如有更好的方法将在以后更新
标签:ListNode,sum,next,链表,l2,result,l1,Leetcode,No.2 来源: https://blog.csdn.net/qq_44028801/article/details/99470789