118. 杨辉三角

<递归>

题目描述


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

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

示例:

输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

我的思路 - 递归


class Solution:
    def generate(self, numRows: int) :
        def resolve(row,base):
            
            if row>=numRows:
                return base
            layer = [1]+[base[-1][i]+base[-1][i+1] for i in range(len(base[-1])-1)]+[1]
            base.append(layer)
            return resolve(row+1,base)
                
        ret = [[1],[1,1]]
        if numRows<=2:
            return ret[:numRows-1]
        return resolve(2,ret)
  • 算法:

    • 每次递归把整个杨辉三角代进去
    • 根据最后一行来推出下一行,并加入结果中
    • 递归结果
  • 需要优化的地方

    • 每次递归都会代入整个杨辉三角

 

原文地址:https://www.cnblogs.com/remly/p/12736780.html