题目描述
给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
输入: numRows = 1
输出: [[1]]
提示:
- 1 <= numRows <= 30
代码及注释
func generate(numRows int) [][]int {
// 初始化一个二维数组res,用于存储生成的杨辉三角
res := make([][]int, numRows)
// 遍历每一行,生成杨辉三角
for i := 0; i < numRows; i++ {
// 初始化每一行的数组,长度为i+1
res[i] = make([]int, i + 1)
// 每一行的首位和末位都为1
res[i][0] = 1
res[i][i] = 1
// 计算当前行的其他数字
for j := 1; j < i; j++ {
res[i][j] = res[i - 1][j] + res[i - 1][j - 1]
}
}
// 返回生成的杨辉三角
return res
}
代码解释
- 初始化一个二维数组
res
,用于存储生成的杨辉三角。 - 对于第
i
行(从0开始),初始化长度为i+1
的数组。 - 每一行的首位和末位都为1。
- 对于第
i
行的其他位置,其值为上一行对应位置和上一行前一个位置的和。
最后,返回生成的杨辉三角res
。