营销型网站建设电话,wordpress唯美破解主题,外贸购物网站建设,软件编程培训学校排名目录
一、题目
杨辉三角
二、题解
三、代码
四、总结 一、题目
题目链接#xff1a;https://leetcode.cn/problems/pascals-triangle/description/
杨辉三角 题目描述#xff1a;给定一个非负整数 numRows#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨…目录
一、题目
杨辉三角
二、题解
三、代码
四、总结 一、题目
题目链接https://leetcode.cn/problems/pascals-triangle/description/
杨辉三角 题目描述给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中每个数是它左上方和右上方的数的和。 示例一 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例二 输入: numRows 1 输出: [[1]] 二、题解
1、 在原题目中一开始给出如下代码
class Solution {public ListListInteger generate(int numRows) {}}
可知让补写的方法的返回类型为 ListListInteger 我们再看到它的时候可以想到二维数组是如何存放元素的。我们类比于二维数组ListListInteger的理解可为外层List集合类容器里面的每一个元素仍是List类。 2、根据返回类型我们首先可以创建出外层
ListListInteger ret new ArrayList();
//里面的每一个元素都为ArrayList类型
ret里面的每一个元素就是杨辉三角的其中一行对于杨辉三角的每一行我们也用ArrayList类来实现每一行都创建一个ArrayList顺序表。
如图 杨辉三角的第一行只有一个元素1所以第一行我们这样实现
ListInteger row1 new ArrayList();row1.add(1);ret.add(row1); //将杨辉三角的第一行加入ret
对于第二行至第numRows 行它们的第一个元素和最后一个元素都是1而中间元素可以由上一行的两个元素相加所以如下实现
for (int i 1;i numRows;i) {ListInteger curRow new ArrayList();curRow.add(1);ListInteger prvRow ret.get(i-1);for (int j 1;ji;j) {curRow.add(prvRow.get(j) prvRow.get(j-1));}curRow.add(1);ret.add(curRow);} 三、代码
完整代码如下
class Solution {public ListListInteger generate(int numRows) {ListListInteger ret new ArrayList();//第一行ListInteger row1 new ArrayList();row1.add(1);ret.add(row1);for (int i 1;i numRows;i) {ListInteger curRow new ArrayList();curRow.add(1);ListInteger prvRow ret.get(i-1);for (int j 1;ji;j) {curRow.add(prvRow.get(j) prvRow.get(j-1));}curRow.add(1);ret.add(curRow);}return ret;}} 四、总结 本文的杨辉三角的解法有多种像二维数组在本文我们使用了ArrayList集合类主要是想通过此题来练习Java集合类的使用。希望此文能帮到你们感谢阅读