题目
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
思路
- 用动态规划的思路
- 对比新的一行的数据与上一行
- 新增末尾一项值为
1
j
指向当前行的第几项,除了第一项与最后一项外,第rows[j]
项的值等于rows[j] + rows[j - 1]
- 新增末尾一项值为
代码
/**
* @param {number} rowIndex
* @return {number[]}
*/
var getRow = function(rowIndex) {
let rows = []
for(let i = 0; i <= rowIndex; i++ ) {
rows[i] = 1
for(let j = i - 1; j > 0; j--) {
rows[j] = rows[j] + rows[j - 1]
}
}
return rows
};
复杂度分析
- 时间复杂度: O ( N 2 ) O(N^2) O(N2)
- 空间复杂度: O ( N ) O(N) O(N)