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;
};
这篇博客详细介绍了如何使用JavaScript实现杨辉三角,并展示了优化后的代码,减少了冗余计算,提高了效率。核心思想是利用上一行的元素来计算当前行的每个元素,首尾元素始终为1。
769

被折叠的 条评论
为什么被折叠?



