题目如下(题目链接戳我):

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

也给出了杨辉三角的示例图:

以下是我的解题思路:

我首先整理了前 5 行杨辉三角的数据;

11 11 2 11 3 3 1
1 4 6 4 1

根据题目的返回值要求( List < List < Integer >> )(我在中括号和字母之间故意加了空格),我把每一行看作一个集合,每个元素对应一个下标索引,我把索引也整理了一下;

00 10 1 20 1 2 3
0 1 2 3 4

然后得出了以下几条规律和方法:

  1. 第一个元素为1(这个其实不算规律,就是事实,只是为了一会写代码时方便写限制)
  2. 每一行数据集合 List< Integer > 的第一个元素为 1(也是事实);
  3. 增加一个集合,用于记录上一行的数值;
  4. 每个元素等于上一个集合同索引的数值和前一个索引的数值的和(这也是个事实,不过要加个限制,见下条);
  5. 每行集合中最后一个元素(索引为index)只等于上一行集合中索引为 index-1 的值;

思路整理完了,剩下写代码就很简单了。

public List<List<Integer>> generate(int numRows) {List<List<Integer>> list = new ArrayList<>();List<Integer> item;//当前行的集合List<Integer> last = null; //上一行的集合int index = 1; //行号,每行元素个数和行号一致while (index <= numRows) {item = new ArrayList<>();//循环index次,向item中添加元素a:for (int i = 0; i < index; i++) {if(last == null){item.add(1);break a;}else if(i == 0){item.add(1);}else if(i == index - 1){item.add(last.get(i - 1));}else{item.add(last.get(i - 1) + last.get(i));}}last = item;list.add(item);index++;}return list;}

提交结果:

执行用时 : 1 ms, 在Pascal's Triangle的Java提交中击败了97.86% 的用户
内存消耗 : 33.6 MB, 在Pascal's Triangle的Java提交中击败了39.51% 的用户

杨辉三角java代码_【LeetCode】118. 杨辉三角(Pascal#x27;s Triangle)解题思路相关推荐

  1. python杨辉三角_yiduobo的每日leetcode 118.杨辉三角 amp;amp; 119.杨辉三角II

    祖传的手艺不想丢了,所以按顺序写一个leetcode的题解.计划每日两题,争取不卡题吧. 118.杨辉三角https://leetcode-cn.com/problems/pascals-triang ...

  2. 判断三角形java代码_打基础之LeetCode算法题第72篇:最大的三角形周长问题

    一直很纠结算法的文章应该怎么写.最后觉得还是从最简单的level开始写吧,一开始就弄些重量级的,什么人工智能,机器学习的算法,还要有大量的数学以及优化的知识,小白们估计会很郁闷,当然我也不一定能做出来 ...

  3. 给定下面的java代码_则运行_会产生类型的异常_JavaSE_笔试题_单选选择题

    JavaSE_笔试题_单选选择题1 1. 下面哪一种描述是正确的()? A:abstract修饰符可修饰字段.方法和类. B:抽象方法的body部分必须用一对大括号{}包住. C:声明抽象方法,大括号 ...

  4. 文思海辉工作-Java代码规范(2019-08-20)

    (review代码,check代码需要注意的规范,需牢记!) 目录 1.前言 2.标识符命名规范 2.1统一 2.2简洁 2.3骆峰法则 3.代码格式 4.注释规范 1.前言 Java代码规范以SUN ...

  5. 连连看java代码_连连看 - java代码库 - 云代码

    [java]代码库/* * To change this license header, choose License Headers in Project Properties. * To chan ...

  6. 关联规则java代码_重量挖掘关联规则挖掘方法,哪个大神可以将以下伪代码转换为Java代码?...

    重量挖掘关联规则挖掘方法,哪个大神可以将以下伪代码转换为Java代码? 10 改进的加权关联规则算法的基本步骤与Apriori算法相似: 首先找到加权支持度不小于用户指定的最小加权支持度的所有频繁项集 ...

  7. amd cpu不能在cmd环境下运行java代码_「我们一起学Java02」JDK、JRE、JVM简介,Java开发平台的搭建...

    Hello,各位头条的读者大家好!接下来一段时间小编将和大家一起学习Java,"我们一起学Java"专题将会持续更新,欢迎大家关注.这里是"我们一起学Java" ...

  8. amd cpu不能在cmd环境下运行java代码_如何在Windows10中配置java的JDK环境

    今天给大家分享一下如何配置java的JDK环境.操作步骤如下: 1.下载好 jdk 的安装文件,我下载的是 jdk-10.0.1_windows-x64_bin.exe 这个版本的安装文件: 2.使用 ...

  9. java 代码 _程序员用1.5小时写出的Java代码,让同事瞠目结舌!直呼优秀

    1.曾经不止一次在生产中见过类似这样的代码: 这有很多变种,例如用 Integer.valueOf(1). (Integer)1 之类的,那些细节都不重要.重要的是:凭空用一个 Integer 对象作 ...

最新文章

  1. Oracle优化08-并行执行
  2. java红包雨_Java升职加薪课开发企业年会红包雨场景项目实战视频教程
  3. pandas和spark的区别
  4. Leetcode905.Sort Array By Parity按奇偶排序数组
  5. 资源放送丨《并行不悖——Oracle数据库并行的是是非非》PPT视频
  6. HTML5 学习总结(二)——HTML5新增属性与表单元素
  7. mysql 重启数据库实例_mysql 单机多实例重启数据库服务
  8. HDOJ-1050-Moving Tables(nyoj220)
  9. c语言中按字节运算,C语言中位运算的巧用
  10. 好用的在线 java 编译网站,编辑器(亲测)
  11. Python官方中文文档网址和Python标准库官方中文文档网址
  12. 汽车产业与技术链分析
  13. C语言的文件读取------C语言
  14. ROS Dst-Nat 后内网不能通过公网IP访问内网服务器解决方法
  15. 【年月】-单词学习记录(模板)
  16. 云服务器需要芯片吗,什么时候手机不再需要芯片——计算云端化是不可逆转的未来...
  17. qemu网络配置-桥接-IOT固件模拟
  18. 试题与研究杂志试题与研究杂志社试题与研究编辑部2023年第2期目录
  19. 组装一台计算机的配置,2000元组装一台i7迷你主机电脑配置推荐
  20. 软件测试黑白盒报告,软件测试黑盒实验报告

热门文章

  1. oracle删除排序数据库,数据库的数据操作:增删改查和排序
  2. html css模仿实例,HTML+CSS模仿大学网站主页
  3. linux view查看日志命令,【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
  4. android 字符串调用方法名,AndroidJNI.CallStringMethod 调用字符串方法
  5. oracle数据库12下载地址,Oracle 数据库和补丁下载地址 12.1.0.2 11.2.0.4 11.2.0.1
  6. 【OpenCV 例程200篇】88. 频率域拉普拉斯高通滤波
  7. SPSS基础操作(二):用迭代法处理序列相关,并建立回归方程
  8. SQL Server 2008R2安装详细教程(附安装包)
  9. 国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍
  10. python3下使用cv2.imwrite存储带有中文路径图片或者绝对路径图片