LeetCode 118. Pascal's Triangle

题目

Given numRows, generate the first numRows of Pascal’s triangle.

For example, given numRows = 5,
Return

1
2
3
4
5
6
7
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]

分析

Pascal 三角形,特点是当前数组前置一个0和当前数组后置一个0 的和,组成的新数组

  • 输入:Pascal 三角形的行数 numRows
  • 任务:返回 numRows Pascal 三角形
  • 条件:行数大于0
  • 输出:返回 numRows Pascal 三角形

代码

1
2
3
4
5
6
7
8
9
10
class Solution(object):
def generate(self, numRows):
"""
:type numRows: int
:rtype: List[List[int]]
"""
res = [[1]]
for i in range(1, numRows):
res += [map(lambda x, y: x+y, res[-1] + [0], [0] + res[-1])]
return res[:numRows]

点评

按照 Pascal 三角形的特点,使用 map 和 lambda 实现 numpy 数组相加的功能。
或者直接使用列表推导式+zip也可以实现