給定一個非負整數 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;
};