算法(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)

相关推荐
萑澈17 小时前
Windows 7 运行 Electron 安装包报“不是有效的 Win32 应用程序”怎么办
javascript·windows·electron
W.A委员会18 小时前
JS原型链详解
开发语言·javascript·原型模式
她说彩礼65万18 小时前
C# 实现简单的日志打印
开发语言·javascript·c#
房开民19 小时前
可变参数模板
java·开发语言·算法
不知名的忻19 小时前
Morris遍历(力扣第99题)
java·算法·leetcode·morris遍历
状元岐19 小时前
C#反射从入门到精通
java·javascript·算法
子兮曰20 小时前
Bun v1.3.12 深度解析:新特性、性能优化与实战指南
前端·typescript·bun
_深海凉_20 小时前
LeetCode热题100-除了自身以外数组的乘积
数据结构·算法·leetcode
a11177620 小时前
Three.js 的前端 WebGL 页面合集(日本 开源项目)
前端·javascript·webgl
Kk.080221 小时前
项目《基于Linux下的mybash命令解释器》(一)
前端·javascript·算法