动态规划:
public List<List<Integer>> generate(int numRows) {
int[][] dp = new int[numRows][numRows];
// 初始化边界值为1
for (int i = 0; i < numRows; i++) {
dp[i][0] = 1;
dp[i][i] = 1;
}
// 计算中间的数值
for (int i = 2; i < numRows; i++) {
for (int j = 1; j <= i; j++) {
dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
}
}
List<List<Integer>> list = new ArrayList<>();
// 将二维数组转化为List<List<Integer>>形式
for (int i = 0; i < numRows; i++) {
List<Integer> li = new ArrayList<>();
for (int j = 0; j <= i; j++) {
li.add(dp[i][j]);
}
list.add(li);
}
return list;
}