118. Pascal's Triangle( Java
2018-11-29 本文已影响8人
f1a94e9a1ea7
给一个数值,比如 5,输出如下三角形数组:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
解析:
- 每一列第一个都是 1,最后一行也是 1
- 每一列第 n 个是上一行第 n 个和第 n+1 个相加的值
/**
* @param {number} numRows
* @return {number[][]}
*/
let getRow = (prevRow, i) => {
if(i == 0){
return [1];
}
if(i == 1){
return [1,1];
}
// 这里是新的一行的第一项
let newRow = [1];
// 所以这里得出的值是从新的一行的第二项开始
for(let i = 0; i < prevRow.length-1; i++){
// 而第二项是上一行的第一项 + 第二项
newRow.push(prevRow[i] + prevRow[i+1])
}
newRow.push(1);
return newRow;
}
let generate = (numRows) =>{
let toReturn = [];
for(let i = 0; i < numRows; i++){
let prevRow = toReturn[i-1];
let currentRow = getRow(prevRow, i);
toReturn.push(currentRow);
}
return toReturn;
}