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

相关推荐
LYFlied1 天前
【每日算法】LeetCode 146. LRU 缓存机制
前端·数据结构·算法·leetcode·缓存
半桶水专家1 天前
vue中的props详解
前端·javascript·vue.js
长安牧笛1 天前
社区银发智慧陪伴系统,AI模拟家人语气聊天,监测老年人日常活动,如用药,出门,异常情况,自动推送给子女,兼顾陪伴与安全。
javascript
阿蒙Amon1 天前
JavaScript学习笔记:3.控制流与错误处理
javascript·笔记·学习
a努力。1 天前
小红书Java面试被问:ThreadLocal 内存泄漏问题及解决方案
java·jvm·后端·算法·面试·架构
LYFlied1 天前
【每日算法】LeetCode142. 环形链表 II
数据结构·算法·leetcode·链表
前端不太难1 天前
RN 遇到复杂手势(缩放、拖拽、旋转)时怎么设计架构
javascript·vue.js·架构
超级大只老咪1 天前
“和”与“或”逻辑判断与条件取反(Java)
java·算法
LYFlied1 天前
【每日算法】LeetCode 23. 合并 K 个升序链表
前端·数据结构·算法·leetcode·链表
xiaoxue..1 天前
LeetCode 第 15 题:三数之和
前端·javascript·算法·leetcode·面试