我在leetcode https://leetcode.com/problems/pascals-triangle/discuss/中看到了关于Pascal's Triangle
的答案,但我真的不明白作者是怎么做到的。
def generate(self, numRows):
res = [[1]]
for i in range(1, numRows):
res += [map(lambda x, y: x+y, res[-1] + [0], [0] + res[-1])]
return res[:numRows]
我不太了解map
部分。希望有人能帮助我。
答案 0 :(得分:2)
请注意其页面上的leetcode示例下面的说明:
说明:可以使用前一行的偏移量来构造任何行。示例:
1 3 3 1 0 + 0 1 3 3 1 = 1 4 6 4 1
res
是一个列表列表,每个列表代表三角形中的一行。 res[-1] + [0]
获取res
中的最后一个元素并向其添加0(例如,[1]
转为[1, 0]
)。同样,[0] + res[-1]
在开头添加0([1]
转为[0, 1]
)。
map
部分只添加了在lambda部分中创建的两行,如leetcode解释中所示。 res += [map(...)]
将结果添加到res
。
例如,generate(4)
会为您提供[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]
。
将打印件添加到代码的各种不清楚部分以尝试更好地理解它是非常有用的。
以下是一些有用的链接: