算法(TS):杨辉三角

给定一个非负整数 numRows, 生成「杨辉三角」的前 numRows 行。在杨辉三角中,每个数都是其左上角和右上角的和

示例 1:

输入: numRows = 5

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

示例 2:

输入: numRows = 1

输出: [[1]]

提示: 1 <= numRows <= 30

解法

第一行固定为[1],第二行固定为[1,1],其余行中每个数的计算公式为 (prevRow[j] || 0) + (prevRow[j-1] || 0),第1行1个数,第2行2个数,第3行3个数,以此类推。

ts 复制代码
function generate(numRows: number): number[][] {
    const res = []
    
    for(let i = 0; i < numRows; i++) {
        if(i===0) {
            res.push([1])
            continue
        }
        if(i === 1) {
            res.push([1,1])
            continue
        }

        const nums: number[] = []
        const prevRow = res[i-1]
        for(let j = 0; j < i + 1; j++) {
            nums.push((prevRow[j] || 0) + (prevRow[j-1] || 0))
        }

        res.push(nums)
    }
    return res
};

时间复杂度O(numRows*numRows),空间负责度O(1)

相关推荐
用户6802659051197 小时前
全栈可观测性白皮书——实施、收益与投资回报率
javascript·后端·面试
天若有情6737 小时前
IoC不止Spring!求同vs存异,两种反向IoC的核心逻辑
java·c++·后端·算法·spring·架构·ioc
掘金安东尼7 小时前
⏰前端周刊第 454 期(2026年2月16日-2月22日)
前端·javascript·面试
tankeven7 小时前
HJ103 Redraiment的走法
c++·算法
瓦特what?8 小时前
平 滑 排 序
c++·算法·排序算法
掘金安东尼8 小时前
⏰前端周刊第 453 期(2026年2月9日-2月15日)
前端·javascript·面试
Wcowin8 小时前
为Zensical添加 GitHub 仓库卡片
javascript·github·zensical
醒过来摸鱼8 小时前
合并区间问题
算法
Trouvaille ~8 小时前
【动态规划篇】专题(二):路径问题——在网格图中的决策艺术
c++·算法·leetcode·青少年编程·动态规划
飘逸飘逸8 小时前
Autojs进阶前言
android·javascript