美文网首页
杨辉三角

杨辉三角

作者: 422ccfa02512 | 来源:发表于2020-11-20 20:35 被阅读0次

    题目

    难度级别:简单

    给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

    在杨辉三角中,每个数是它左上方和右上方的数的和。

    示例:

    输入: 5
    输出:
    [
         [1],
        [1,1],
       [1,2,1],
      [1,3,3,1],
     [1,4,6,4,1]
    ]
    

    解题思路

    看了下上图规律,前面一行决定着下一行的数据,下一行当前节点等于之前一行2节点值和(左右2边除外)。通过创建栈res,并在numRows大于0时初始化为[[1]]的二位数组,当当前栈的长度小于numRows则对栈的最上层进行遍历,求出下一行的值。最后将求出的值入栈。

    const generate = function(numRows) {
        if (numRows === 0) return []
    
        const res = [[1]]
    
        if (numRows === 1) return res
    
        while (res.length < numRows) {
            const currentLine = [1]
            const lastLine = res[res.length - 1]
            const len = lastLine.length
    
            for (let i = 0; i < len; i++) {
                if ((i+1) === len) {
                    currentLine.push(1)
                }else{
                    currentLine.push(lastLine[i] + lastLine[i + 1])
                }
            }
            res.push(currentLine)
        }
    
        return res
    };
    

    题目来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/pascals-triangle

    相关文章

      网友评论

          本文标题:杨辉三角

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