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

LeetCode 118 题解--杨辉三角

杨辉三角

题目链接:https://leetcode.cn/problems/pascals-triangle/description/

杨辉三角是一个不仅在数学中非常经典的例题,还是在编程中也是一个比较经典的问题,下面就来看看这道题吧!
在这里插入图片描述
我们可以看到的是杨辉三角就是一个典型的三角形,并且每行每列元素都有元素!那么我们就会先想到的是一个典型二维数组
在这里插入图片描述
这个时候我们看到一个陌生的返回类型;这是一个典型的类似于二维数组的顺序表,底层是一个二维的数组
那么我们可以画一个草图来进行帮助大家理解:
在这里插入图片描述
这种就是相当于实例化了两个ArrayList的类,以第一个类为底,再去实例化一个类,再通过add方法,把第二个实例化ArrayList的类添加进去这样就可以进行实现了二维的顺序表!

但是我们明白了它是一个二维数组,可是我们怎么实现了这种对称的等腰三角形呢?
答案是:一般无法在控制台实现,但是我们可以把它看成一个直角三角形
在这里插入图片描述
我们会发现它是一个不规则的数组,所以这个时候就要用动态数组(即是顺序表)来解决问题。
这个时候我们再来看杨辉三角的特点:
1. 首尾项都是1
2. 中间某项的元素是上一行同一列的元素与上一行同前一列的元素的和
只要按照这个思路去解决问题即可;

完整代码如下:

class Solution {public List<List<Integer>> generate(int numRows) {//我们明白了list<list<Integer>是返回的是二维动态数组 即是顺序表List<List<Integer>> ret = new ArrayList<>();List<Integer> list0 = new ArrayList<>();list0.add(1);//第一行只有一个元素ret.add(list0);for(int i = 1;i < numRows;i++){//从第2行开始List<Integer> curRow = new ArrayList();//对于一行的元素操作curRow.add(1);List<Integer> preRow = ret.get(i-1);for(int j = 1;j < i;j++){int val1 = preRow.get(j);int val2 = preRow.get(j-1);curRow.add(val2 + val1);}curRow.add(1);ret.add(curRow);}return ret;}
}

相关文章:

  • leetcode每日一题(好几天之前的) -- 3068.最大节点价值之和
  • 什么是可重组机器人?
  • 【Day38】
  • SwaggerEndPoints 配置访问外部 Swagger 文档
  • 使用蓝耘元生代 MaaS 平台 API 工作流调用技巧与实践体验
  • 九级融智台阶与五大要素协同的量子化解析
  • 仿盒马》app开发技术分享-- 确认订单页(数据展示)(端云一体)
  • 迪宇电力绝缘胶垫四大优势,用特殊橡胶配方制成,具备多项实用优势
  • Day31 -js应用 -实例:webpack jQuery的使用及其隐含的安全问题
  • MySQL 窗口函数深度解析:语法、应用场景与性能优化
  • 理解vue-cli 中进行构建优化
  • 不同电脑同一个网络ip地址一样吗?如何更改
  • HTML Day02
  • C++—decltype
  • 大模型(5)——编码器(Encoder)、解码器(Decoder)
  • 大模型微调(面经总结)
  • Linux编译器——gcc/g++的使用
  • 实时数仓和离线数仓的区别是什么?企业如何选择合适的数仓架构?
  • 华为云Flexus+DeepSeek征文|ModelArts Studio开通DeepSeek-V3与R1商用服务实践与体验
  • Playwright 常用命令、参数详解及使用示例
  • 怎么用自己主机做网站_/org域名注册
  • 个人网站建设 优帮云/广东新闻今日大件事
  • 为什么最近好多网站打不开了/邯郸网站建设优化
  • 十大免费erp管理软件/东莞搜索seo网站关键词优化
  • wordpress添加优酷视频/搜索引擎优化培训
  • 阿里云带宽5m能做什么网站/友情链接系统