/**
* @param {number} numRows
* @return {number[][]}
*/
var generate = function(numRows) {
let res = []; // 保存输出结果
let lastTem = []; // 保存上一次的结果
for(let i=0; i<numRows; i++) {
let tem = [];
for(let j=0; j<=i; j++) {
if(j==0||j==i) { // 如果第一个或者最后一个就加1
tem.push(1);
}
else { // 否则就是上一次结果中对应位置的加和
tem.push(lastTem[j-1]+lastTem[j]);
}
}
res.push(tem);
lastTem = tem;
}
return res;
};
进阶:根据指定数字返回行,0代表第一行
/**
* @param {number} rowIndex
* @return {number[]}
*/
var getRow = function(rowIndex) {
let lastTem = [];
for(let i=0; i<=rowIndex; i++) {
let tem = [];
for(let j=0; j<=i; j++) {
if(j==0||j==i){
tem.push(1);
}
else {
tem.push(lastTem[j-1]+lastTem[j]);
}
}
lastTem = tem;
}
return lastTem;
};