1、题目:118. 杨辉三角 - 力扣(LeetCode) (leetcode-cn.com)
2、实现
- 实现思路:维护一个二维数组arr,每一行的首尾两个元素都是1,其他元素为上一行相邻两个元素之和。如下图所示:
- 代码:
/**
* @param {number} numRows
* @return {number[][]}
*/
var generate = function(numRows) {
if(numRows === 0) return [];
let arr = [[1]];
for(let i=1; i<numRows; i++) {
arr[i] = [];
for(let j=0; j<=i; j++) {
// 每一行收尾元素为1
if(j === 0 || j === i) {
arr[i][j] = 1;
} else {
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
}
return arr;
};
- 优化后的代码:
/**
* @param {number} numRows
* @return {number[][]}
*/
var generate = function(numRows) {
if(numRows === 0) return [];
let arr = [[1]];
for(let i=1; i<numRows; i++) {
arr[i] = [1];
for(let j=1; j<=i; j++) {
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
arr[i][i] = 1;
}
return arr;
};