快捷搜索: 王者荣耀 脱发

【LeetCode】118. 杨辉三角(js 实现)

1、题目:

2、实现

    实现思路:维护一个二维数组arr,每一行的首尾两个元素都是1,其他元素为上一行相邻两个元素之和。如下图所示:
    代码:
/**
 * @param {number} numRows
 * @return {number[][]}
 */
var generate = function(numRows) {
    if(numRows === 0) return [];
    let arr = [[1]];
    for(let i=1; i<numRows; i++) {
        arr[i] = [];
        for(let j=0; j<=i; j++) {
            // 每一行收尾元素为1
            if(j === 0 || j === i) {
                arr[i][j] = 1;
            } else {
                arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
            }
        }
    }
    return arr;
};
    优化后的代码:
/**
 * @param {number} numRows
 * @return {number[][]}
 */
var generate = function(numRows) {
    if(numRows === 0) return [];
    let arr = [[1]];
    for(let i=1; i<numRows; i++) {
        arr[i] = [1];
        for(let j=1; j<=i; j++) {
            arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
        }
        arr[i][i] = 1;
    }
    return arr;
};

3、参考:

经验分享 程序员 微信小程序 职场和发展