相关标签
一、题目要求
二、题解和代码实现
1.题解
非官方题解,看图理解
2.代码实现
代码如下(示例):
//动态规划
class Solution {
public List<Integer> getRow(int rowIndex) {
Integer[] arr = new Integer[rowIndex+1];
Arrays.fill(arr,1);//初始化全部为1
for (int i = 2; i < arr.length; i++) {//从第三行开始,因为前两行的值都为1,跳过
for (int j = i-1; j > 0; j--) {//首尾两格不动
//要从后往前遍历,就是每一行倒着从后往前填,这样每覆盖填写一个数就不会影响下一项的计算。
arr[j]+=arr[j-1];// arr[ j ] = arr[ j - 1 ] + arr[ j ]的简写
}
}
return Arrays.asList(arr);
}
}
//暴力破解
class Solution {
public List<Integer> getRow(int rowIndex) {
Integer[][] arr = new Integer[rowIndex + 1][rowIndex + 1];//生成数组
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <=i; j++) {//遍历
if (j ==0 || j==i){//当j为0 或者末尾i时赋值为1
arr[i][j] =1;
}else {//当不是时,赋值为左上方和右上方的和
arr[i][j]= arr[i-1][j-1]+arr[i-1][j];
}
}
}
return Arrays.asList(arr[rowIndex]);
}
}