118. 杨辉三角(动态规划)

解答

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if numRows == 1:
            return [[1]]
        if numRows == 0:
            return [] 
# 得到一个嵌套列表[[0], [0,0], [0,0,0]...]
        dp = [([0] * (i + 1)) for i in range(numRows)]
        dp[0][0] = 1
        dp[1][0] = 1
        dp[1][1] = 1
        for i in range(2, numRows):
            dp[i][0] = 1
            dp[i][-1] = 1
            for j in range(1, len(dp[i])-1):
                dp[i][j] = dp[i-1][j-1] + dp[i-1][j]
        return dp

2.错位相加

def generate(numRows):
    if numRows == 0:
        return []
    res = [[1]]
    while len(res) < numRows:
        # 两列表对应位置的值相加用zip
        last_row = [a+b for a,b in zip([0] + res[-1], res[-1] + [0])]
        res.append(last_row)
    return res
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。