【LeetCode】118. 杨辉三角(js 实现)
1、题目:
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; };
3、参考: