ArrayList与杨辉三角

前面我们学习了ArrayList,现在我们一起来学一下它在杨辉三角中是如何应用的吧~~

一、了解什么是杨辉三角

杨辉三角最早由中国南宋数学家杨辉在《详解九章算法》中提出,我们浅浅了解一下他的来历~

杨辉三角的定义:杨辉三角,又称帕斯卡三角,是一种数学上的三角形数表,具有丰富的数学性质和广泛的应用。其基本结构如下:

  • 每一行的两端数字都是1。
  • 从第二行开始,中间的每个数字等于其上方两个数字之和。
  • 用代码表示则是[i][j]=[i-1][j]+[i-1][j-1]

二、采用ArrayList

从上面我们可以知道解决杨辉三角是要采用二维数组的,但ArrList底层是一维数组,这就需要我们理解一个新的概念:List<List<Integer>> list = new ArrayList<>();

这个与二维数组很像的嵌套列表结构,首先List<Integer> 这是定义了一个数组

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)的意思是获取上一行的信息。接下来就计算中间列的数值,然后将算入的数值加入进去就行了!

我们来看看整体代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值