分类
JavaScript 学习笔记

leetcode 118. 杨辉三角

好像记得在以前刚学算法,好像是递归的时候学到过这个三角形,所以第一眼看到想用递归做,又感觉好像不对劲,看了看题解发现没人用递归做

杨辉三角规律就是从第三行开始,除了第一和最后一个值 中间的值都是上一行的行数+行数-1 也是 这个值的位数+位数-1

即 answer[i-2][s-1] + answer[i-2][s-2]

i 为当前的行数 上一行-1 索引-1 所以为-2

s为当前行要求的第n个元素 然后因为是索引 -1

说的比较乱,写的也很菜…

/**
 * @param {number} numRows
 * @return {number[][]}
 */
var generate = function(numRows) {
    if (numRows == 0 ) return []
    if (numRows == 1 ) return [[1]]
    let answer = [[1], [1,1]]
    if (numRows == 2 ) return answer
    for (let i = 3; i <= numRows; i++) {
        let newarr = []
        for (let s = 2; s < i; s++) {
            newarr.push(answer[i-2][s-1] + answer[i-2][s-2]) 
        }
        newarr.unshift(1)
        newarr.push(1)
        answer.push(newarr)
    }
    return answer
};

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注