[leetcode]118.杨辉三角

前言:剑指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

学到的知识点:

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

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

相关推荐

  1. LeetCode 题目 118三角

    2024-03-27 09:40:04       34 阅读
  2. LeetCode 119. 三角 II

    2024-03-27 09:40:04       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 09:40:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 09:40:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 09:40:04       82 阅读
  4. Python语言-面向对象

    2024-03-27 09:40:04       91 阅读

热门阅读

  1. Linux的systemctl命令

    2024-03-27 09:40:04       41 阅读
  2. Unity关于实现雨刮器shader效果实现

    2024-03-27 09:40:04       29 阅读
  3. leetcode 1218.最长定差子序列

    2024-03-27 09:40:04       37 阅读
  4. 了解什么是Docker

    2024-03-27 09:40:04       38 阅读
  5. React常见跳转方式汇总

    2024-03-27 09:40:04       41 阅读
  6. 特征提取技术实例

    2024-03-27 09:40:04       39 阅读