前面我们学习了ArrayList,现在我们一起来学一下它在杨辉三角中是如何应用的吧~~
一、了解什么是杨辉三角
杨辉三角最早由中国南宋数学家杨辉在《详解九章算法》中提出,我们浅浅了解一下他的来历~
杨辉三角的定义:杨辉三角,又称帕斯卡三角,是一种数学上的三角形数表,具有丰富的数学性质和广泛的应用。其基本结构如下:
- 每一行的两端数字都是1。
- 从第二行开始,中间的每个数字等于其上方两个数字之和。
- 用代码表示则是[i][j]=[i-1][j]+[i-1][j-1]
二、采用ArrayList
从上面我们可以知道解决杨辉三角是要采用二维数组的,但ArrList底层是一维数组,这就需要我们理解一个新的概念:List<List<Integer>> list = new ArrayList<>();![]()
这个与二维数组很像的嵌套列表结构,首先List<Integer> 这是定义了一个数组
List<List<Integer>>

这就是相当于先建立了一个list数组a,然后将这个list数组a再放在一个list中,这样就嵌套成了一个与二维数组很像的嵌套列表结构,接下来我就采用二维数组代称,便于理解!
如何用代码实现呢?
首先需要将第一行和第一列单独提出来写:

这段代码的意思就是首先建立一个二维的数组ret,然后再建立一个一维的row数组。在一维数组中添加一个1进去,然后结合我上面讲的List<List<Integer>>这个是一个二维数组,然后将row添加到ret中,就是将row数组加到了ret数组中了。row就是ret中的第一行!
最后一列也是如此:

中间列:
numRows是要计算到多少行,在每一行开始都设置了一个一维数组,curRow.add(1)是在第一列添加一个1,然后List<Integer> prevRow=ret.get(i-1)的意思是获取上一行的信息。接下来就计算中间列的数值,然后将算入的数值加入进去就行了!
我们来看看整体代码:

1265

被折叠的 条评论
为什么被折叠?



