【发布时间】:2021-09-01 21:34:30
【问题描述】:
我正在尝试几个 LeetCode 练习,并且我设法编写了 95% 的解决方案,但我无法弄清楚结果。我最终查看了其中一个解决方案,发现它与我正在做的事情相似。我只是想知道是否有人可以为我解释他解决方案的最后部分:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
num1 = ''.join(joinList(l1)[::-1])
num2 = ''.join(joinList(l2)[::-1])
num3 = str(int(num1) + int(num2))[::-1]
list = []
for x in range(len(num3)):
list.append(ListNode(int(num3[x])))
##################################
#for x in range(len(list) - 1): # <----------- Explain what this is doing, everything
# list[x].next = list[x + 1] # else I managed to write
##################################
return list[0]
def joinList(node):
list = []
x = node
while x != None:
list.append(str(x.val))
x = x.next
return list
我们的目标是:
给定两个代表两个非负整数的非空链表。这些数字以相反的顺序存储,它们的每个节点都包含一个数字。将两个数字相加并将总和作为链表返回。 你可以假设这两个数字不包含任何前导零,除了数字 0 本身。
我很困惑为什么需要将 list[0].next、list[1].next 设置为等于 list[x + 1]。
【问题讨论】: