美文网首页
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