当前位置: 首页 > news >正文

杨辉三角 II(js实现,LeetCode:119)

 这题是杨辉三角的进阶版题目,所以直接在返回值那里返回整个三角的rowIndex行的数组就可以做出来

/**
 * @param {number} rowIndex
 * @return {number[]}
 */
var getRow = function(rowIndex) {
    let arr = [[1], [1, 1]]
    for (let i = 1; i <= rowIndex - 1; i++) {
        let single_arr = []
        for (let j = 0; j <= i + 1; j++) {
            if (j == 0 || j == i + 1) {
                single_arr.push(1)
            } else {
                single_arr.push(arr[i][j - 1] + arr[i][j])
            }
            console.log(single_arr)
        }
        arr.push(single_arr)
    }
    return arr[rowIndex]
};

 时间和空间复杂度都为O(N²),这也太吓人了,要是返回第200行所需要的时间与空间有点太多了,这里思考一下如何优化,使用滚动数组的思想优化空间复杂度,上一篇文章提到说第rowIndex行就刚好有rowIndex个元素,

var getRow = function(rowIndex) {
    let pre = [], cur = [];
    for (let i = 0; i <= rowIndex; ++i) {
        cur = new Array(i + 1).fill(0);
        cur[0] = cur[i] =1;
        for (let j = 1; j < i; ++j) {
            cur[j] = pre[j - 1] + pre[j];
        }
        pre = cur;
    }
    return pre;
};

这里还是用了2个数组来实现,再优化一下,只使用一个数组

var getRow = function(rowIndex) {
    const row = new Array(rowIndex + 1).fill(0);
    row[0] = 1;
    for (let i = 1; i <= rowIndex; ++i) {
        for (let j = i; j > 0; --j) {
            row[j] += row[j - 1];
        }
    }
    return row;
};

这样优化之后空间复杂度变成了O(N)

http://www.dtcms.com/a/82494.html

相关文章:

  • [7-01-03].SpringBoot3集成MinIo
  • PTA团体程序设计天梯赛-练习集51-55题
  • Yolo系列之Yolo v3的概述、网络结构以及与v1,v2对比
  • Ubuntu20.04 Bevfusion TensorRt部署
  • Burp Suite 代理配置与网络通信
  • 昆泰芯KTH2582系列高灵敏度、锁存型霍尔开关传感器
  • 如何缓解大语言模型推理中的“幻觉”(Hallucination)?
  • 如何用CAPL定制化输出内容到Write窗口
  • 苍穹外卖学习笔记
  • 京东API数据清洗与结构化存储:从JSON原始数据到MySQL实战
  • gin-路由handler封装思路
  • upload-labs靶场学习记录2
  • OpenCV图像拼接(2)基于羽化(feathering)技术的图像融合算法拼接类cv::detail::FeatherBlender
  • CVPR2025 | 对抗样本智能安全方向论文汇总 | 持续更新中~
  • 《C++智能指针:建议使用 make_shared 代替 shared_ptr》
  • PostgreSQL 数据库源码编译安装全流程详解 Linux 8
  • SysVinit和Systemd的系统运行级别
  • 探秘 WRF DA:多维度剖析其在气象研究中的卓越效能
  • C++具名转型的功能和用途
  • 奇怪的异形选项卡样式、弧形边框选项卡
  • Go语言中package的使用规则《二》
  • java基础之windows电脑基础命令
  • 【其他】在线安装DataEase后无法远程访问
  • k近邻图(knn-graph)和局部线性嵌入图(LLE-graph)的相似性和区别
  • Python JSON模块loads、load、dump、dumps详解
  • Sql Server 索引性能优化 分析以及分表
  • 【LeetCode】大厂面试算法真题回忆(37)--知识图谱新词挖掘
  • 大数据从入门到入魔系列————探索大数据前世今生之迷
  • Unity | 游戏数据配置
  • SpringBoot整合MQTT最详细版(亲测有效)