java数据结构与算法刷题-----LeetCode118:杨辉三角

【简单】力扣算法题解析LeetCode118:杨辉三角 杨辉三角是一种数学图形,每个数是其左上方和右上方数之和。给定行数numRows,生成前numRows行。 解法: 初始化结果列表,首行固定为[1] 从第1行开始循环生成后续行: 每行首尾元素为1 中间元素=上一行同列+前列元素 时间/空间复杂度均为O(n²) 示例: 输入5输出[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 该问题通过动态规划逐行生成,是理解二维递推关系的经典案例。 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路分析

分析规律,实现即可,左右都是1,中间的是上一行前两个的和

  1. 代码
    在这里插入图片描述
class Solution {
    public List<List<Integer>> generate(int numRows) {
        ArrayList<List<Integer>> lists = new ArrayList<List<Integer>>();//数组实现的列表,查询O(1)
        for (int i = 0; i < numRows; i++) {
            ArrayList<Integer> list = new ArrayList<Integer>(){{add(1);}};//第一个元素必定是1
            for (int j = 1;j<=i;j++){
                if(j==i) list.add(1);//最后一个元素必定是1
                else list.add(lists.get(i - 1).get(j - 1)+lists.get(i - 1).get(j));
            }
            lists.add(list);//每行添加到结果集
        }
        return lists;
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
  4. 差分数组:对差分数组求前缀和即可得到原数组
  1. 用差值,作为下标,节省空间找东西。比如1900年到2000年,就可以定义100大小的数组,每个数组元素下标的查找为1900。
  2. 前缀和数组,对于数组 [1,2,2,4],其差分数组为 [1,1,0,2],差分数组的第 ii个数即为原数组的第 i-1 个元素和第 i个元素的差值,也就是说我们对差分数组求前缀和即可得到原数组
  1. 前缀和:假设有一个数组arr[1,2,3,4]。然后创建一个前缀和数组sum,记录从开头到每个元素区间的和。第一个元素是0。第二个元素,保存第一个和sum[1] = sum[0]+arr[0],第二个元素,保存第二个和sum[2] = sum[1]+arr[1]
  1. 栈解题思路:倒着入栈,双栈
  1. 倒着入栈:适用于出栈时想让输出是正序的情况。比如字符串’abc’,如果倒着入栈,那么栈中元素是(c,b,a)。栈是先进后出,此时出栈,结果为abc。
  2. 双栈:适用于实现队列的先入先出效果。一个栈负责输入,另一个栈负责输出。
超详细!动态规划详解分析(典型例题分析和对比,附源码) 为啥要使用动态规划?什么时候使用动态规划?以下是我的一些理解和心得,如果你感兴趣,就接着往下看吧。 对您有帮助的话记得给我点个赞哟! 动态规划的基本思想 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。 动态规划算法与分治法类似,其基本思想也是将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中 得到原有问题的解。与分治法不同的是,动态规划经分解后得到的子问题 阅读详情

相关推荐

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常

前期使用Qt开发一个登录模块一直使用很好。最近在一台新电脑上使用时发现排版混乱。这个问题很普遍,主要原因是旧软件对高清显示器的适配不当造成的。新电脑使用的是4K屏,win10系统自动进行了175%的缩放。

cihron的博客 1万+

数据结构与算法(2)——各种方法实现杨辉三角

分别用二维数组、一维数组、递归等三种方法实现杨辉三角; 如下是完整的Java代码:package algorithm;public class YangHui

亡羊补牢 3144

uniapp串口通信实战:从零搭建物联网设备控制App(附完整代码)

本文详细介绍了如何使用Uniapp实现串口通信,从零搭建物联网设备控制App。内容涵盖环境配置、串口初始化、数据收发、错误处理等核心功能,并提供了完整的代码示例,帮助开发者快速掌握跨平台串口通信技术,适用于智能农业、工业自动化等物联网场景。

weixin_30369041的博客 597

数据结构——栈和队列 02(杨辉三角队列解法)

队列处理模式: 整个数据处理过程模型即是一个队列的形式。 杨辉三角的队列解法,编程输出几行杨辉三角形; 【】杨辉三角是由二项式(a+b)的 n 次方(n=1,2,3…)展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。 算法描述: 在每行之间插入一个0作为行的分隔标记,形成的系数序列存在数组queue[]中。 设 front 指向要求和的...

herui7322的博客 3749

同步辐射材料科学应用指南:从XAFS原位实验到数据处理

材料结构分析是材料研究的核心环节,但传统实验室X射线受限于能量固定、亮度不足,往往难以回答原子局域配位、非晶结构及动态演变等关键问题。同步辐射光源以高通量、连续可调、偏振可控及脉冲时间结构等特性,将材料表征从静态观察推进到原位动态追踪层次。基于X射线吸收精细结构谱(XAFS)、原位实验、X射线衍射与散射、微区成像等技术,研究人员可实现元素选择性分析、近邻原子环境解析及真实工况下的结构演变监测。本文从技术原理出发,覆盖实验方案设计、样品制备、现场对光、数据处理与常见故障排查,并结合典型应用场景,为材料科学领域

weixin_32612263的博客 174

Visual Studio 2022 社区版安装指南:从下载到配置的完整流程

本文详细介绍了Visual Studio 2022社区版的完整安装与配置流程,包括系统要求检查、官方下载步骤、工作负载选择、安装位置配置等关键环节。作为微软推出的免费集成开发环境,VS2022社区版支持多种编程语言,适合个人开发者和小型团队使用。文章还提供了常见问题解决和性能优化技巧,帮助用户高效完成开发环境搭建。

weixin_28829339的博客 888

杨辉三角的几种解决方法(c语言)

杨慧三角的几种解决方法(c语言) 以下为直角三角形图案样式 1.二维数组法(前提是您对二维数组或者是杨辉三角有一定的了解) #include <stdio.h> int main() { int a[100][100];//定义一个二维数组,用以储存数据 int i,j;//i定义为行,j定义为列 int n; scanf("%d",&n);//输入层数 for(i=0;i<n;i++) { for(j=0;j<=.

kittates的博客 1567

Simulink模块库介绍(一)——信号源模块

Simulink模块库介绍(一)——信号源模块库目录Clock模块Digital Clock模块Band-Limited White Noise模块 目录 simulink模块库中提供了丰富的信号源模块组。逐一介绍,算是对之前做个总结吧 Clock模块 通过时钟模块,输出的时间作为判断呢,如下图,前2s之前为高斯白噪声,后2s为正弦曲线,共计10s。 Digital Clock模块 数字时钟模块主要用于离散系统的计时,sample time表示采用时间,如下图:分别是1s和0.5s的采样时间 Band-

5万+

Python实习数据结构与算法——杨辉三角

题目描述: 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/p...

Mantana的博客 637

大数据Alluxio面试题及参考答案

Alluxio 在大数据生态里的定位是作为数据编排层,能在不同计算框架和存储系统之间起到桥梁的作用。它的核心功能在于加速数据访问,让大数据应用能够更高效地使用数据。Alluxio 把数据存储和数据处理分离开来,使计算框架可以在不考虑底层存储细节的情况下访问数据,这样就提高了系统的灵活性和可扩展性。Alluxio 和 HDFS 既存在关联又有区别。从关联方面来看,HDFS 是一种广泛使用的分布式文件系统,很多大数据应用都将其作为主要的数据存储系统。Alluxio 可以和 HDFS 集成,把 HDFS 当作底层

大模型大数据攻城狮的专栏 864

本地部署 OpenClaw:让 AI 真正“干活”的开源智能体,从核心概念到实战全流程

在大模型遍地开花的今天,我们早已习惯与 AI 聊天,但真正能**接管本地任务、自动化工作流**的“数字员工”却寥寥无几。OpenClaw 正是这样一款开源利器——它不仅是可本地运行的 AI 私人助理,更像一个“AI 操作系统内核”,能读写文件、执行终端命令、控制浏览器,所有数据本地存储,兼顾隐私与效率。而 Skills 作为它的标准化插件系统,更是让这份能力无限扩展。 本文将从核心概念拆解入手,再分系统给出**保姆级本地部署步骤**,包含环境准备、安装配置、技能安装与验证,甚至覆盖新手最易踩的坑,让你一次

ZhangJiqun&191cm&85kg 2501

关于数据结构与算法的网站

http://www.geeksforgeeks.org/,一个算法题和数据结构的网站,可以在上面多刷刷

渣渣 1884

PCL 法线定向【2025最新版】

几种法线定向方法的PCL代码实现。

点云侠的博客 2806

【leetcode刷题】34.杨辉三角——Java版

每日一题

公号:一条coding 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LeetCode刷题汇总

剑指offer 剑指 Offer 03 数组中重复的数字 剑指 Offer 04 二维数组中的查找 剑指 Offer 05 替换空格 剑指 Offer 06 从尾到头打印链表 剑指 Offer 07 重建二叉树 剑指 Offer 09 用两个栈实现队列 剑指 Offer 10- I 斐波那契数列 剑指 Offer 10- II 青蛙跳台阶问题 剑指 Offer 11 旋转数组的最小数字 剑指 Offer 12 矩阵中的路径 剑指 Offer 13 机器人的运动范围 剑指 Offer 14- I 剪绳子 剑指

weixin_44171872的博客 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode 算法刷题目录 (Java)

保存自己的刷题纪录,方便以后复习。

代码星辰的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

118.杨辉三角【LeetCode】

写数据结构类型的题要多画图,从图中慢慢摸索规律。看到这里咯,点个关注再走!

qq_60021974的博客 7157

Java全解法——力扣118.杨辉三角

本文总结了LeetCode 118题“杨辉三角”的多种Java解法,包括逐行构造、保留上一行、一维数组优化和组合数公式四种方法。文章分析了各解法的时间复杂度(均为O(n²))和空间优化策略,并给出了面试建议:优先选择直观的逐行构造法,组合数公式适合数学拓展。关键点包括更新顺序、数据类型选择和边界处理。扩展思考提出了流式生成和大数取余等优化方向。全文提供了完整的可运行代码,适合面试准备和算法学习参考。

w1311823723的博客 1344

力扣最热一百题——杨辉三角

力扣最热一百题——三种写法,两种写法,深度解析,新手也能学会!!!

WenJGo的博客 1487

【LeetCode 热题 100】118. 杨辉三角

这段代码旨在解决一个经典的数学与编程问题:生成杨辉三角 (Pascal’s Triangle)。问题要求根据给定的行数 ,生成一个表示杨辉三角的嵌套列表。该算法采用了一种 逐行模拟(或称动态规划) 的方法。它利用了杨辉三角的一个核心性质:每一行的每个数(除了两边的1)都等于它正上方和左上方两个数之和。算法的逻辑是,通过迭代,一行一行地构建出整个三角形。其核心逻辑步骤如下:初始化:逐行生成:构建当前行 ():添加到结果集:返回结果: 时空复杂度 时间复杂度:O(numRows^2) 循环结构:算法使用了嵌套

最短的捷径就是绕远路,绕远路才是我的最短捷径。 1448

LeetCode 118 杨辉三角 (Java)

通过记忆化优化递归解法,我们既保持了数学定义的直观性,又获得了与迭代法相当的效率。杨辉三角作为经典数学概念,其高效生成算法展示了递归优化技术的强大威力。递归+记忆化:更贴近问题数学定义迭代法:实现更简洁,无递归开销理解这两种解法的核心在于掌握递归关系的优化技巧,这对解决动态规划类问题具有重要指导意义。

2301_79966297的博客 1209

Java实现 LeetCode 118 杨辉三角

118. 杨辉三角 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] class Solution { public List<List<Integ...

南 墙 1万+

【JAVA刷题初阶】刷爆力扣第三弹——数组

合并两个有序数组 && 杨辉三角 && 两数之和

爱打酱油的新一的博客 704

力扣刷题118 杨辉三角

轻轻松松学会杨辉三角

oneouto的博客 459

LeedCode118. 杨辉三角(Java语言实现)——教你在两周时间刷完数据结构

方法很好理解:第一行有1个元素,第n行有n个元素 *每一行的第一个元素和最后一个元素都是1 *第三行开始,对于非第一个元素和最后一个元素的元素为上面和上面前面元素的和 *即arr[i][j]=arr[i-1][j-1] + arr[i-1][j];

一颗正在成长的在校卷心菜 7350

LeetCode第118题—杨辉三角

LeetCode第118题

Green_756的博客 659
上一篇: java数据结构与算法刷题-----LeetCode111:二叉树的最小深度
下一篇: java数据结构与算法刷题-----LeetCode112:路径总和
ydenergy_殷志鹏
博客等级 码龄7年 5886粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值