Java 帕斯卡三角/杨辉三角
程序员文章站
2024-03-15 16:15:12
...
帕斯卡三角在国内教科书中成为杨辉三角,他们形如下图:
观察其规律,可以看到每一层的其实和结束都是1,层数和元素个数相同。在当层数大于2层,非起始元素的值计算公式为:data[i][j] =data[i-1][j-1] + data[i-1][j]
分析到这里,解决方法已经出来了,我们使用递推公式,对每一层的元素进行处理,下面给出对应的实现:
1. 使用递推公式求解杨辉三角
public List<List<Integer>> testPascal(int numRows) {
List<List<Integer>> rst = new ArrayList<>();
if (numRows < 0){
return null;
}
for (int i = 0; i < numRows; ++i) {
List<Integer> current = new ArrayList<>();
//开始元素为1
current.add(1);
//当层数大于2层的时候,使用迭代公式
if (i > 1) {
for (int j = 1; j < i; ++j) {
List<Integer> tmp = rst.get(i - 1);
current.add(tmp.get(j - 1) + tmp.get(j));
}
}
if (i > 0) {
current.add(1);
}
rst.add(current);
}
return rst;
}
2. 使用数学变换求解杨辉三角
在*上可以看到,杨辉三角其实可以通过数学变换,其与二项式展开形式一致。具体可以去*上看,实现可以参考这篇博客:
https://www.cnblogs.com/JumperMan/p/6759422.html