leetcode代码记录(杨辉三角

简介: leetcode代码记录(杨辉三角

1. 题目:

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

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

示例 1:

输入: numRows = 5

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

示例 2:

输入: numRows = 1

输出: [[1]]

2. 我的代码:

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        # 初始化
        result = [[1]]
        for row in range(1, numRows):
            result.append([1] + (row - 1) * [0] + [1])
            
        # 递推公式
        for row in range(2, numRows):
            for col in range(1, row):
                result[row][col] = result[row - 1][col -1] + result[row - 1][col]
                
        return result

动态规划,后面的值需要前面的值确定,就像是一个二维的斐波那契数列。首先初始化,把整个三角形的边都初始化为1;然后,递推公式为result[row][col] = result[row - 1][col -1] + result[row - 1][col],当然是从第二行开始求解,本位置的值为上面一行里左边和正上方元素的值。把握好遍历的范围即可。

目录
相关文章
|
4天前
|
机器学习/深度学习
leetcode代码记录(旋转图像
leetcode代码记录(旋转图像
9 0
|
4天前
|
算法
leetcode代码记录(全排列 II
leetcode代码记录(全排列 II
13 4
|
4天前
|
算法
leetcode代码记录(全排列
leetcode代码记录(全排列
12 1
|
4天前
|
索引
leetcode代码记录(Z 字形变换
leetcode代码记录(Z 字形变换
11 1
|
4天前
leetcode代码记录(最长回文子串
leetcode代码记录(最长回文子串
10 2
|
4天前
leetcode代码记录(回文数
leetcode代码记录(回文数
12 1
|
4天前
|
算法
leetcode代码记录(寻找两个正序数组的中位数
leetcode代码记录(寻找两个正序数组的中位数
13 2
|
4天前
leetcode代码记录(两数之和
leetcode代码记录(两数之和
11 1
|
4天前
|
索引
leetcode代码记录(最长公共子序列
leetcode代码记录(最长公共子序列
7 0
|
4天前
|
索引
leetcode代码记录(最长重复子数组
leetcode代码记录(最长重复子数组
12 0