力扣原题链接
[https://leetcode.cn/problems/pascals-triangle/
首先我们必须要知道杨辉三角用什么样的数据结构存储时最合适的
从这里看出来应该是二维数组比较合适
我们函数形参设置为杨辉三角这个二维数组的行数rowNumber,该函数的返回值是ArrayList<ArrayList<Integer>>
,这是一个二维数组的Integer泛型.
import java.util.ArrayList;
//杨辉三角
public class Test {
public static ArrayList<ArrayList<Integer>> YangHuiTriangle(int rowNember) {
ArrayList<Integer> preArrayRow = new ArrayList<>();//上一行
ArrayList<ArrayList<Integer>> array = new ArrayList<>();
//后面的行
for (int i = 0; i < rowNember; i++) {
//第一行
if (i == 0) {
ArrayList<Integer> firstRow = new ArrayList<>();
firstRow.add(1);
array.add(firstRow);
} else {
ArrayList<Integer> curArrayRow = new ArrayList<>();//现在的行
preArrayRow = array.get(i - 1);//获取前一行
//每一行第一个元素是1
curArrayRow.add(1);
//中间元素满足[i][j] =[i-1][j-1] + [i-1][j]
for (int j = 1; j < i; j++) {
curArrayRow.add(preArrayRow.get(j) + preArrayRow.get(j - 1));
}
//每一行的最后一个元素
curArrayRow.add(1);
array.add(curArrayRow);
}
}
return array;
}
public static void main(String[] args) {
ArrayList<ArrayList<Integer>> arrayList = new ArrayList<>();
arrayList = YangHuiTriangle(5);
for (int i = 0; i < arrayList.size(); i++) {
for (int j = 0; j < arrayList.get(i).size(); j++) {
System.out.print(arrayList.get(i).get(j) + " ");
}
System.out.println();
}
}
}