[leetcode]118.杨辉三角

news2024/11/19 13:28:16

前言:剑指offer刷题系列

问题:

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

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

image-20230919231437970.png

示例:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

思路:

杨辉三角是小学就学过的一种方法,看着还挺熟悉,所以没有花费很多时间理解(学名叫做 帕斯卡三角形 的数学模型),帕斯卡三角形是一个由数字构成的三角形,其中每个数字是肩膀上方两个数字之和,一直做金字塔下延。

这个函数接受一个名为 numRows 的整数作为输入,并返回一个二维列表,表示「杨辉三角」的前 numRows 行。下面是详细的思考过程。

  1. 首先,定义一个名为 Solution 的 Python 类。这个类将包含一个方法 generate,它接受一个整数参数 numRows,用于指定要生成的行数。方法的返回值将是一个二维列表,其中包含了帕斯卡三角形模型的前 numRows 行。
  2. generate 方法中,创建一个空列表 triangle,用于存储生成的三角形。
  3. 使用外层循环 for i in range(numRows) 来控制生成的行数。在每次循环中,创建一个空列表 row,用于存储当前行的元素。
  4. 在内层循环 for j in range(1, i) 中,通过访问上一行的元素来计算当前行的元素值。具体地说,将当前元素设置为上一行中相邻两个元素之和:row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
  5. 完成内层循环后,将当前行 row 添加到 triangle 列表中。
  6. 外层循环结束后,返回存储了帕斯卡三角形模型的二维列表 triangle

基于上述思考,代码如下:

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        triangle = []
        
        for i in range(numRows):
            row = [1] * (i + 1)
            
            for j in range(1, i):
                row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
            
            triangle.append(row)
        
        return triangle

执行结果如下图:

image-20230919231347888.png

学到的知识点:

学会如何使用帕斯卡三角形模型生成特定行数的三角形。

今天突然发现之前参加的一个活动快要结束了,但是我的任务还没有做完,要抓紧做一下任务,不然自己的心血啊都要泡汤了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ZigBee/ZStack快速入门】04-串口

时钟 协议栈都是用的32M晶振工作的,所以在学习串口使用之前,应该学习一下如何调时钟 cc2530在运行过程中需要一个高频时钟信号和一个低频时钟信号,高频时钟信号主要供给cpu保证程序运行,16Mhz RC(这也是为什么定时器计算分频时是…

GPU-CPU-ARM-X86-RISC-CUDA

CPU更适合处理复杂逻辑运算和单线程任务,而GPU则更适合处理大规模并行计算任务。 CPU(中央处理器)通常具有较少的核心数量(一般在2到16个之间),但每个核心的性能较强,擅长执行复杂的运算和逻辑…

DevSecOps平台架构系列-亚马逊云AWS DevSecOps平台架构

目录 一、概述 二、AWS DevSecOps实施原则 2.1 尽早采用安全测试,加速问题反馈 2.2 优先考虑预防性安全控制 2.3 部署检测性安全控制时,确保有与之互补的响应性安全控制 2.4 安全自动化 2.5 总结 三、AWS DevSecOps关键组件 3.1 关键组件 3.2 关…

LeetCode Python - 78. 子集

目录 题目描述解法方法一:DFS(回溯)方法二:二进制枚举 运行结果方法一方法二 题目描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集 (幂集)。 解集 不能 包含重复的子集。你可以按 任…

视频声音生成字幕 pr生成视频字幕 以及字幕乱码的解决

目录 目录 1、首先把要生成字幕的视频拖入以创建序列 2、点击工具栏的 窗口 选择 文本 3、选择字幕下的 转录序列 4、选择输出的语言(主要看视频声音说的是啥语言) 5、音轨 选择 音频1​编辑 6、点击转录 7、等待转录文本 8、点击创建说明性字幕按…

智慧交通(代码实现案例)

1.项目简介 目标: 了解智慧交通项目的架构知道智慧交通项目中的模块能够完成智慧交通项目的环境搭建 该项目是智慧交通项目,通过该项目掌握计算机视觉的方法在交通领域的相关应用,包括车道线检测的方法,多目标车辆追踪及流量统计方法&#…

如何快速进行城市内涝模拟?HTWATER软件

原文链接:如何快速进行城市内涝模拟?HTWATER软件https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599079&idx2&sndc6f3da8b17c5587cf5b7766e7019729&chksmfa820200cdf58b16658983ecfbf2b369bff39813302942d6f7eb7b71428c68da71…

Django 仿博客园练习

数据库搭建 部分功能介绍 【一】注册 (1)效果显示、简单简介 主要亮点 结合了layui和forms组件默认头像可以随着性别的选择发生改变自定义头像可以实时更新显示forms组件报错信息可以局部刷新显示在对应框体下面 没有直接使用layui的前端验证后端验证…

Vue2 使用mockjs

一、创建项目 vue create mock-demo二、安装 npm install mockjs --save-dev npm install axios --save三、创建mock文件夹 四、修改main.js 五、应用

js选择语句

文章目录 1. if 分支语句1.1. 示例代码1.2. 运行结果 2. if 双分支语句3. if 多分支语句4. switch 语句(了解)4.1. 注意4.2. case 穿透现象4.3. case 穿透产生的原因 5. switch 语句与选择语句区别别5.1. 语法上的区别5.2. 应用场景上的区别 6. 三元表达…

HCIP—BGP路由发布

R1和R2,R4和R5建立EBGP对等体 R1和R2(R4和R5)之间属于EBGP对等体,可以使用直连物理接口建立对等体关系,TTL值默认1。由于使用直连物理接口方式建立,刚好一跳到达。 [R1]bgp 100 [R1-bgp]router-i…

燃气官网安全运行监测系统-阀井燃气监测仪-旭华智能

近年来,燃气爆炸事故频发,造成了重大人员伤亡和财产损失。这也再次为我们敲响警钟,燃气是我们日常生活中不可或缺的能源,但其潜在的危险性也是不容小觑。因此在重要节点加装燃气阀井气体监测仪,并将数据上传到系统平台…

【QT+QGIS跨平台编译】之九十四:【QGIS_App跨平台编译】—【错误处理:字符串错误】

文章目录 一、字符串错误二、涉及到的文件一、字符串错误 常量中有换行符错误:(也有const char * 到 LPCWSTR 转换的错误) 需要把对应的文档用记事本打开,另存为 “带有BOM的UTF-8” 二、涉及到的文件 涉及到的文件有: src\app\qgisapp.cpp src\app\qgsprojectpropert…

JetBrains全家桶激活,分享 DataGrip 2024 激活的方案

大家好,欢迎来到金榜探云手! DataGrip 公司简介 JetBrains 是一家专注于开发工具的软件公司,总部位于捷克。他们以提供强大的集成开发环境(IDE)而闻名,如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工…

金融投贷通--接口测试分析、设计与实现

金融投贷通--接口测试分析、设计与实现 接⼝相关理论ui功能测试和接⼝测试那个先执⾏ui功能测试与接⼝测试的区别ui功能测试和接⼝测试那个更⾼效 投资业务接⼝接口测试流程如何测试分析api文档项目难点 测试点提取注册图⽚验证码、注册验证码注册登录测试点开通登录测试点开通…

API成网络攻击常见载体,如何确保API安全?

根据Imperva发布的《2024年API安全状况报告》,API成为网络攻击者的常见载体,这是因为大部分互联网流量(71%)都是API调用,API是访问敏感数据的直接途径。根据安全公司Fastly的一项调查显示,95%的企业在过去1…

蓝桥杯刷题-子串简写

子串简写 代码 kint(input()) s,c1,c2input().split() pre[0]*len(s) ans0 for i in range(len(s)):pre[i]pre[i-1]if c1s[i]:pre[i]1elif c2s[i] and i1-k>0:anspre[i-k1] print(ans)

宾大率先推出藤校首个AI专业!25Fall即可申请!

随着人工智能技术的不断发展,当今社会对AI的需求已呈现出日益多样化的趋势。由ChatGPT、Midjourney等AI应用领衔,生成式的人工智能迅速崛起。各个领域都开始意识到AI的潜在应用价值,该领域的人才需求量也越来越大。在这样的人工智能热潮下&am…

【办公类-21-10】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行距、蓝色字体、去掉五分钟”

作品展示 背景需求 今天将最后3个育婴师操作视频做整理 第1步:视频MP4转MP3 【办公类-40-01】20240311 用Python将MP4转MP3提取音频 (家长会系列一)-CSDN博客文章浏览阅读393次,点赞9次,收藏6次。【办公类-40-01】20…

java网络原理(四)----tcp特性

一.滑动窗口 滑动窗口:可以提高传输效率,准确的来说是让tcp在可靠传输的前提下,效率不要太拉胯。使用滑动窗口不能使tcp变的比UDP块,但能减少差距。 前面谈过tcp的传输数据的时,会把数据进行编号,每次传固…