美文网首页
118. Pascal's Triangle( Java

118. Pascal's Triangle( Java

作者: f1a94e9a1ea7 | 来源:发表于2018-11-29 23:10 被阅读8次

给一个数值,比如 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;
}

相关文章

网友评论

      本文标题:118. Pascal's Triangle( Java

      本文链接:https://www.haomeiwen.com/subject/yhwqcqtx.html