标题:119. 杨辉三角 II
难度:简单
天数:第12天,第2/2题
给定一个非负索引
rowIndex
,返回「杨辉三角」的第rowIndex
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: rowIndex = 3
输出: [1,3,3,1]
示例 2:
输入: rowIndex = 0
输出: [1]
示例 3:
输入: rowIndex = 1
输出: [1,1]
提示:
0 <= rowIndex <= 33
进阶:
你可以优化你的算法到
O(rowIndex)
空间复杂度吗?
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
//动态规划 第 12 天 2/2
public List<Integer> getRow(int rowIndex) {
//记录第i层的数
int[] dp = new int[rowIndex+1];
dp[0] = 1;
for(int i = 1 ; i <= rowIndex;i++){
//第i位赋值1
dp[i] = 1;
// 倒序计算,
// 目的:正序的时候,j-1已经被累加过值了,导致中间计算增大
// 正序计算 for(int j = 1;j < i ;j++)
// i = 3 [1,2,1,1]
// j = 1 [1,3(1+2),1,1]
// j = 2 [1,3,4(3+1),1]
// 这里位置2就变成了3+1=4,本应该是2+1,所以倒序遍历赋值
for(int j = i - 1;j > 0 ;j--){
dp[j] = dp[j-1] + dp[j];
}
}
return Arrays.stream(dp).boxed().collect(Collectors.toList());
}
}