给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pascals-triangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/**
* @param {number} numRows
* @return {number[][]}
*/
var generate = function(numRows) {
var arr = [];
for (var i = 0; i < numRows; i++) {
var item = [];
for (var j = 0; j <= i; j++) {
if (j == 0) {
item[0] = 1
} else if (j == i) {
item[j] = 1
} else {
// console.log("i", i)
// console.log("j", j)
item[j] = arr[i-1][j-1] + arr[i-1][j]
}
}
arr.push(item)
// console.log(arr)
}
return arr;
};
问题二
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
可以 在上面的代码 返回 arr[arr.length -1 ] 返回最后一个数组即可;
其他function (参考他人)如下
/**
* @param {number} rowIndex
* @return {number[]}
*/
var getRow = function(rowIndex) {
// 方法一
// 先写第一第二行 模板 第三行开始 用规律 计算
if (rowIndex === 0) {
return [1];
}
if (rowIndex === 1) {
return [1,1];
}
let resultArr = [1,1];
for (let i = 2; i < rowIndex + 1; i++) {
let tempArr = [];
for (let j = 0; j <= i; j++) {
tempArr.push((j === 0 ? 0 : resultArr[j - 1]) + (j === i ? 0 : resultArr[j]))
}
resultArr = tempArr;
}
return resultArr;
// 方法二
// 给每个模板数组增加一个第一个元素为 0
// let resultArr = [1];
// for (let i = 0; i < rowIndex; i++) {
// resultArr.unshift(0);
// for (let j = 0; j < i + 1; j++) {
// resultArr[j] = resultArr[j] + resultArr[j + 1];
// }
// }
// return resultArr;
};