118. 杨辉三角(Python)

题目

难度:★☆☆☆☆
类型:数组

给定一个非负整数 numRows,生成杨辉三角的前 *numRows *行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例

输入: 5

输出:

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

解答

这道题很简单,通过简单的循环嵌套即可实现,这里需要注意的是初始化过程。

class Solution:
    def generate(self, numRows):
        
        if numRows == 0:                                            # 输入为0,输出[]
            return []

        if numRows == 1:                                            # 输入为1,输出第一层
            return [[1]]

        if numRows == 2:                                            # 输入为2,输出前两层
            return [[1], [1, 1]]

        res, prev_layer = [[1], [1, 1]], [1, 1]                     # 初始化结果变量和上一层结果
        for r in range(2, numRows):
            cur_layer = []                                          # 初始化
            for i in range(0, len(prev_layer)-1):
                cur_layer.append(prev_layer[i]+prev_layer[i+1])     # 当前层结果
            cur_layer = [1] + cur_layer + [1]                       # 左右两边添加1
            res.append(cur_layer)                                   # 添加当前层结果
            prev_layer = cur_layer                                  # 更新前一层结果为当前层结果
        return res

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(118. 杨辉三角(Python))