【每日一题】4.LeetCode——杨辉三角

在这里插入图片描述

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!


文章目录

  • 1.题目描述
    • 示例1
    • 示例2
    • 提示:
  • 2. 解题思路
  • 3. 代码
  • 4. 复杂度分析

1.题目描述

给定一个非负整数numRows,生成杨辉三角的前numRows行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

img

示例1

输入:numRows = 5

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

示例2

输入:numRows = 1

输出:[1]

提示:

  • 1 <= numRosw <= 30

题目链接🔗

2. 解题思路

杨辉三角的性质:

  1. 三角形的每一行的第一个数字和最后一个数字都是1。
  2. 每一个三角的元素等于上一行此位置左边的元素与上一行此位置元素的和。

题解:

杨辉三角的第0行只有一个数:1。对于 1 ≤ i < numRows。用pervRow表示杨辉三角的第 i - 1行,用curRow表示杨辉三角的第 i 行.

  1. 将 1 添加到curRow,表示当前行的首个数是1
  2. 当前行的中间 i - 1个数分别等于其上方两数之和,因此对于 1 <= j < i,有curRow[j] = pervRow[j] + pervRow[j - 1] ,依次将每个pervRow[j] + pervRow[j - 1]添加到curRow中。
  3. 将 1添加到curRow,表示当前行的末尾数是1.
  4. 此时得到完整的curRow,将curRow添加到杨辉三角。

3. 代码

class Solution {
    public List<List<Integer>> generate(int numRows) {
        // 定义一个二维数组
        List<List<Integer>> ret = new ArrayList<>();

        List<Integer> list = new ArrayList<>();
        list.add(1);

        ret.add(list);

        for (int i = 1; i < numRows; i++) {
            // 每循环一次 就是一行
            List<Integer> curRow = new ArrayList<>();
            curRow.add(1); // 一行的第一个元素

            // 处理中间元素
            List<Integer> pervRow = ret.get(i - 1);
            for (int j = 1; j < i; j++) {
                int x = pervRow.get(j) + pervRow.get(j - 1);
                curRow.add(x);
            }

            //最后一个元素
            curRow.add(1);

            ret.add(curRow);
        }
        return ret;
    }
}

运行结果:

image-20231214174109656

4. 复杂度分析

  • 时间复杂度:O(numRows2),因为计算总数为 1 + 2 + 3 + …+ numRows。
  • 空间复杂度:O(numRows2),因为每次计算都会被保留下来,因此空间复杂度的规模与时间复杂度相同。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/348849.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea连接docker

idea 插件无法连接docker问题 原文&#xff1a;idea 插件无法连接docker问题 // 修改docker配置 vi /usr/lib/systemd/system/docker.service // 加上该段配置允许任何ip访问 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock // 重启docker即可 systemctl restart dock…

图像处理------调整色调

什么是色调&#xff1f; 色调&#xff0c;在画面上表现思想、感情所使用的色彩和色彩的浓淡。分为暖色调和冷色调。 from cv2 import destroyAllWindows, imread, imshow, waitKey#创建棕褐色色调 def make_sepia(img, factor: int):pixel_h, pixel_v img.shape[0], img.shap…

OSPF协议解析及相关技术探索(C/C++代码实现)

OSPF&#xff08;开放最短路径优先&#xff09;是一种用于自治系统&#xff08;AS&#xff09;内部的路由协议&#xff0c;它是基于链路状态算法的。OSPF的设计目的是为了提供一种可扩展、快速收敛和高效的路由解决方案。 OSPF概念和特点 概念 自治系统&#xff08;AS&#…

二叉树的最大深度[简单]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个二叉树root&#xff0c;返回其最大深度。 二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a…

高水平 ICT 实验实训平台建设

一、平台建设概述 1.1 人工智能仿真实验实训平台 建设高水平 ICT 实验实训平台–人工智能仿真实验实训平台&#xff0c;是为了提供学生在人工智能领域深入学习和实践的机会。承载《人工智能基础》《人工智能应用》《移动机器人技术应用》《视觉开源机器人》《深度学习与神经网…

C. Doremy‘s City Construction(二分图问题)

思路&#xff1a;把集合划分成两部分,一部分中每个数都比另一部分小,这两部分连成一个完全二分图,这种情况是最优的,还需要特判所有数都相等的情况. 代码&#xff1a; void solve(){int n;cin >> n;vector<int>a(n 1);for(int i 1;i < n;i )cin >> a[…

RK3399平台开发系列讲解(PCIE篇)PCIE 配置过程

🚀返回专栏总目录 文章目录 一、硬件拓扑结构二、配置过程演示沉淀、分享、成长,让自己和他人都能有所收获!😄 一、硬件拓扑结构 以下图中的设备的配置过程为例,给大家做示范。 二、配置过程演示 下文中BDF表示Bus,Device,Function,用这三个数值来表示设备。 软件设置…

上海亚商投顾:沪指涨超3%收复2900点 多只中字头股涨停

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日放量反弹&#xff0c;尾盘一度涨超3%&#xff0c;收复2900点关口&#xff0c;深成指涨2%&#xff0c;…

解决Windows系统本地端口被占用

目录 一、被程序占用端口 1.通过终端杀掉占用端口的进程 2.任务管理器 二、被系统列为保留端口 前言&#xff1a; 首先了解为什么会出现端口被占用的情况 端口被占用的情况可能出现的原因有很多&#xff0c;主要有以下几点&#xff1a; 1.多个应用程序同时启动&…

【STM32】STM32学习笔记-硬件SPI读写W25Q64(40)

00. 目录 文章目录 00. 目录01. SPI简介02. W25Q64简介03. SPI相关API3.1 SPI_Init3.2 SPI_Cmd3.3 SPI_I2S_SendData3.4 SPI_I2S_ReceiveData3.5 SPI_I2S_GetFlagStatus3.6 SPI_I2S_ClearFlag3.7 SPI_InitTypeDef 04. 硬件SPI读写W25Q64接线图05. 硬件SPI读写W25Q64示例06. 程序…

FPGA高端项目:Xilinx Artix7系列FPGA多路视频拼接 工程解决方案 提供4套工程源码和技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我已有的FPGA视频拼接叠加融合方案本方案在Xilinx Kintex7 系列FPGA上的应用本方案在Xilinx Zynq7000系列FPGA上的应用 3、设计思路框架视频源选择ov5640 i2c配置及采集动态彩条多路视…

【VSAN数据恢复】VSAN数据重构迁移失败的数据恢复案例

VSAN简介&#xff1a; VSAN存储是一个对象存储&#xff0c;以文件系统呈现给在vSphere主机上。这个对象存储服务会从VSAN集群中的每台主机上加载卷&#xff0c;将卷展现为单一的、在所有节点上都可见的分布式共享数据存储。 对于虚拟机来说&#xff0c;只有一个数据存储&#x…

cg插画设计行业怎么样,如何学习插画设计

插画设计行业是一个充满创意和艺术性的行业&#xff0c;随着数字化时代的不断发展&#xff0c;cg插画的应用范围越来越广泛&#xff0c;市场需求也在逐年增长。以下是一些关于acg插画设计行业的现状和发展趋势&#xff1a; 市场需求不断增长&#xff1a;随着广告、媒体、影视、…

使用Apache POI 创建和读取excel表

目录 1. Apache POI 中文使用手册 1.1 Apache POI 项目介绍 1.2 处理组件 1.2.1 Excel 文件处理组件 1.2.2 Word 文件处理组件 1.2.3 PPT 文件处理组件 1.2.4 文档属性组件 1.2.5 Visio 文件处理组件 1.2.6 Microsoft Publisher 98&#xff08;-2007&#xff09;文件处…

HMI-Board以太网数据监视器(二)MQTT和LVGL

E ∫ d E ∫ k d q r 2 k L ∫ d q r 2 E \int dE \int \frac{kdq}{r^2} \frac{k}{L} \int \frac{dq}{r^2} E∫dE∫r2kdq​Lk​∫r2dq​ E Q 2 π ϵ L 2 E \frac{Q}{2\pi\epsilon L^2} E2πϵL2Q​ Γ ( n ) ( n − 1 ) ! ∀ n ∈ N \Gamma(n) (n-1)!\quad\forall n…

电脑自动开机播放PPT的解决方案

客户有个需求&#xff0c;要求与LED大屏幕连接的电脑定时自动播放PPT。为了安全电脑在不播放的时段&#xff0c;必须关机。 目录 1、使用“时控插座”并进行设置 2、戴尔电脑BIOS设置&#xff08;上电开机&#xff09; 3、设置Windows自动登录 4、任务计划设置 5、启动Au…

嵌入式linux学习之实践操作

​ 前沿 1. 安装交叉编译器 在开发板光盘 A-基础资料->5、开发工具->1、交叉编译器路径下找到 st-example-image-qt wayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh。将它拷贝到 Ubuntu 虚拟机上。 拷贝到 Ubuntu 后&#xff0c;赋予 st-exam…

RabbitMQ死信交换机

目录 1.死信交换机介绍 2.TTL 3.延迟队列 4.消息堆积问题 5.惰性队列 6.代码实战 1.死信交换机介绍 当一个队列中信息满足下列情况之一时&#xff0c;可以成为死信&#xff08;dead letter&#xff09; &#xff08;1&#xff09;消费者使用basic.reject&#xff08;Reject…

Java基础进阶02-xml

目录 一、XML&#xff08;可拓展标记语言&#xff09; 1.学习网站&#xff1a; 2.作用 3.XML标签 4.XML语法 5.解析XML &#xff08;1&#xff09;常见解析思想DOM 6.常见的解析工具 7.DOM4j的使用 8.文档约束 &#xff08;1&#xff09;概述 &#xff08;2&#xf…

全桥变压器计算1

一共有两级&#xff0c;先DC升压&#xff0c;后H桥逆变为AC 因为两级都有损耗&#xff0c;所以一般用输入功率计算 电池升压到400V高压用的效率用表示&#xff0c;后面DC转AC的效率用表示&#xff0c;输入电压用Vin&#xff0c;输出功率Po2000W,输入功率为Pin 一般和96% 所…