Pascal的三角形在leetcode中回答

时间:2018-02-01 09:43:18

标签: python lambda

我在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部分。希望有人能帮助我。

1 个答案:

答案 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]]

将打印件添加到代码的各种不清楚部分以尝试更好地理解它是非常有用的。

以下是一些有用的链接:

https://www.python-course.eu/lambda.php

https://brilliant.org/wiki/pascals-triangle/