LeedCode 118. 杨辉三角 动态规划入门
原创
©著作权归作者所有:来自51CTO博客作者星辰大数据的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、问题描述
给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
输入: numRows = 1
输出: [[1]]
提示:
二、问题解决
from typing import List
class Solution:
def generate(self, n: int) -> List[List[int]]:
## 1、构造杨辉三角列表
dp = [[1 for _ in range(num)] for num in range(1, n + 1)]
## 2、遍历杨辉三角列表
for i in range(n):
cols = i + 1
for j in range(cols):
## print(i, j, end="\t")
if i < 2 or j == 0 or j == cols-1:
dp[i][j] = 1 ## 3、边界问题解决
else: ## 4、核心逻辑实现
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]
return dp
slt = Solution()
dp = slt.generate(5)
print(dp)
三、解题思路
- 构造杨辉三角列表
- 遍历杨辉三角列表
- 边界问题解决
- 核心逻辑实现
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pascals-triangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。