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

【每日一题】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),因为每次计算都会被保留下来,因此空间复杂度的规模与时间复杂度相同。
    在这里插入图片描述
http://www.lryc.cn/news/287950.html

相关文章:

  • 蓝桥杯(Python)每日练Day5
  • SpringCloud(二)
  • 【java】常见的面试问题
  • 虚幻UE 插件-像素流送实现和优化
  • Vue2 props组件通信
  • 重构改善既有代码的设计-学习(三):重新组织数据
  • 群狼调研(长沙品牌忠诚度测试)|广告效果测评方法
  • Gradle学习笔记:Gradle的使用方法
  • 少儿编程 2023年12月电子学会图形化编程等级考试Scratch二级真题解析(选择题)
  • 基于Java+SpringMvc+vue+element实现上海汽车博物馆平台
  • Sybase PowerDesigner15安装配置
  • 基于物联网设计的水稻田智能灌溉系统(STM32+华为云IOT)
  • 【数据结构】数据结构初识
  • java多线程测试websocket demo(使用文件流)
  • Tosei 自助网络店铺管理系统network_test.php_RCE漏洞复现
  • uni-app 国际化
  • git:git reset 和 git revert
  • LeetCode:670. 最大交换(Java 贪心)
  • 【STM32】STM32学习笔记-Unix时间戳(41)
  • 2016年认证杯SPSSPRO杯数学建模B题(第一阶段)低分辨率下看世界全过程文档及程序
  • 16、Kafka ------ SpringBoot 整合 Kafka (配置 Kafka 属性 及对应的 属性处理类 解析)
  • 【蓝桥杯选拔赛真题61】python偶数平方 第十五届青少年组蓝桥杯python 选拔赛比赛真题解析
  • 智能语音识别源码系统+语义理解+对话管理+语音合成 带完整的搭建教程
  • cdh6.3.2的hive配udf
  • 在DevEco开发工具中,使用Previewer预览界面中的UI组件
  • 【蓝桥杯冲冲冲】旅行计划
  • Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪
  • HarmonyOS鸿蒙学习基础篇 - Text文本组件
  • pytorch学习笔记(十一)
  • 【并发编程】 synchronized的普通方法,静态方法,锁对象,锁升级过程,可重入锁,非公平锁