题目:
119. 杨辉三角 II
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: rowIndex = 3
输出: [1,3,3,1]
示例 2:
输入: rowIndex = 0
输出: [1]
示例 3:
输入: rowIndex = 1
输出: [1,1]
提示:
0 <= rowIndex <= 33
方法一:数学方法 2ms
class Solution {
public List<Integer> getRow(int rowIndex) {
List<List<Integer>> cur = new ArrayList<List<Integer>>();
for(int i = 0; i <= rowIndex; ++i){
List<Integer> arr = new ArrayList<>();
for(int j = 0;j <= i; ++j){
if(j == 0 || i == j){
arr.add(1);
}
else {
arr.add(cur.get(i - 1).get(j - 1)+cur.get(i - 1).get(j));
}
}
cur.add(arr);
}
return cur.get(rowIndex);
}
}
方法二:动态规划 0ms
class Solution {
public List<Integer> getRow(int rowIndex) {
// 方法二:动态规划
List<Integer> cur = new ArrayList<>();
int dp[][] = new int[rowIndex+1][rowIndex+1];
for(int i = 0; i <= rowIndex;i++){
dp[i][i] = 1;
dp[i][0] = 1;
}
for(int i = 2; i <= rowIndex; ++i){
for(int j = 1; j <= i; ++j){
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
}
}
for(int i = 0; i <= rowIndex ;i++){
cur.add(dp[rowIndex][i]);
}
return cur;
}
}