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

相关推荐
聪明的笨猪猪6 小时前
hot 100 (1)—— 两数之和(哈希)
java·经验分享·算法·哈希算法
鹏多多6 小时前
用useTransition解决React性能卡顿问题+实战例子
前端·javascript·react.js
只愿云淡风清6 小时前
ECharts地图数据压缩-ZigZag算法
前端·javascript·echarts
Moment6 小时前
Node.js v25.0.0 发布——性能、Web 标准与安全性全面升级 🚀🚀🚀
前端·javascript·后端
_dindong6 小时前
牛客101:链表
数据结构·c++·笔记·学习·算法·链表
专注前端30年6 小时前
【JavaScript】every 方法的详解与实战
开发语言·前端·javascript
wuk9987 小时前
基于位置式PID算法调节PWM占空比实现电机转速控制
单片机·嵌入式硬件·算法
不到满级不改名7 小时前
EM算法 & 隐马尔可夫模型
算法
一天睡25小时7 小时前
想偷卷?但微信不支持md文档?这个软件助你!
前端·javascript
艾小码7 小时前
3个技巧让你彻底搞懂JavaScript异步编程
前端·javascript