给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
思路:
计算每一行,然后把每一行加入到结果数组里面。
第一行只有一个1;第二行有两个;从第三行开始,先加第一个1,然后循环添加中间的(利用上一行的两数之和),然后添加最后一个1;每计算出一行就把这行加入到结果数组result里面。
/**
* @param {number} numRows
* @return {number[][]}
*/
var generate = function(numRows) {
var result = []; // 最后结果
for (var i = 0; i < numRows; i++) {
var rows = [1]; // 每一行的第一个元素都是1
if (i === 0) {
result.push(rows); // 第一行只有一个1
} else if (i === 1) {
rows.push(1); // 第二行有两个1
result.push(rows);
} else {
for (var j = 0; j < i - 1; j ++) {
rows.push(result[i-1][j] + result[i-1][j+1]); // 把上一行的两个相加
}
rows.push(1); // 添加最后的1
result.push(rows);
}
}
return result;
};