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

LeetCode 热题 100 118. 杨辉三角

LeetCode 热题 100 | 118. 杨辉三角

大家好,今天我们来解决一道经典的算法题——杨辉三角。这道题在 LeetCode 上被标记为简单难度,要求生成杨辉三角的前 numRows 行。杨辉三角是一个经典的组合数学问题,每一行的数字都是其正上方和正左上方的数字之和。下面我将详细讲解解题思路,并附上 Python 代码实现。


问题描述

给定一个非负整数 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
    • 中间的数字可以通过上一行的相邻两个数字相加得到。
  2. 动态规划

    • 使用一个二维列表 triangle 来存储杨辉三角的每一行。
    • 每一行的生成依赖于上一行的值。

Python代码实现

def generate(numRows):# 初始化杨辉三角triangle = []for i in range(numRows):# 每一行的第一个和最后一个数字都是 1row = [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# 测试示例
numRows1 = 5
numRows2 = 1result1 = generate(numRows1)
result2 = generate(numRows2)print(result1)  # 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
print(result2)  # 输出: [[1]]

代码解析

  1. 初始化杨辉三角

    • 使用一个二维列表 triangle 来存储每一行。
  2. 逐行生成

    • 每一行的第一个和最后一个数字都是 1
    • 中间的数字通过上一行的相邻两个数字相加得到。
  3. 动态规划

    • 每一行的生成依赖于上一行的值,因此我们逐行构建杨辉三角。

复杂度分析

  • 时间复杂度:O(numRows²),其中 numRows 是杨辉三角的行数。我们需要逐行生成每一行的数字。
  • 空间复杂度:O(numRows²),用于存储杨辉三角的每一行。

示例运行

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

总结

通过逐行生成的方法,我们可以高效地构建杨辉三角。这种方法直观且易于实现,适合大多数场景。希望这篇题解对大家有所帮助,如果有任何问题,欢迎在评论区留言讨论!

关注我,获取更多算法题解和编程技巧!

相关文章:

  • 使用 Ingress NGINX 和 NLB 优化 EKS 中多个 Kubernetes 服务的外部和内部访问
  • 【FPGA开发】Xilinx DSP48E2 slice 一个周期能做几次int8乘法或者加法?如何计算FPGA芯片的GOPS性能?
  • c++类【开端】
  • weaviate v1.30.2发布!全方位优化SegmentIndex,RBAC升级兼容,OpenAI集成更智能!
  • MyBatis-Plus 非 Spring 环境使用时 `GenericTypeResolver` 缺失问题总结
  • Auto.js 脚本:清理手机数据但保留账号
  • 林业数智化转型初步设计方案
  • 「Mac畅玩AIGC与多模态19」开发篇15 - 判断节点与工具节点联动示例
  • 二项式反演 系列 题解
  • 【蓝牙协议栈】【BR/EDR】【AVCTP】精讲音视频控制传输协议
  • BUUCTF 大流量分析(一) 1
  • AUTOSAR图解==>AUTOSAR_SRS_CryptoStack
  • 从0开始学习大模型--Day01--大模型是什么
  • Linux 常用指令详解
  • tensorflow 调试
  • Lombok 是什么?
  • 014枚举之指针尺取——算法备赛
  • 【Linux网络#17】TCP全连接队列与tcpdump抓包
  • LeetCode 热题 100 78. 子集
  • 洛谷 P9007 [入门赛 #9] 最澄澈的空与海 (Hard Version)
  • 解锁川北底色密码,“文化三地”志愿宣讲员招募计划启动报名
  • 巴菲特股东大会十大金句:未来五年内可能有投资机会,快乐的人活得更久
  • 国内多景区实行一票游多日:从门票经济向多元化“链式经济”转型
  • 安徽安庆市委书记张祥安调研假日经济和旅游安全工作
  • 长江财险一季度净亏1449.81万元,去年曾实现扭亏为盈
  • 生命与大海相连:他在300多米的深海行走,在沉船一线打捞救援