力扣 119. 杨辉三角 II

题目说明

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

img

  • 提示:
    • 0 <= rowIndex <= 33

示例

示例 1:

1
2
输入: rowIndex = 3
输出: [1,3,3,1]

示例 2:

1
2
输入: rowIndex = 0
输出: [1]

示例 3:

1
2
输入: rowIndex = 1
输出: [1,1]

笔者理解

此题是一道数学算法问题,在力扣题库中被定义为简单题。

解法

当笔者阅读完此题后,直接采用了倒序滚动更新的方式,倒序保证了中间的变得越大,滚动实现了空间优化,让我们来看看具体如何实现的吧。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public List<Integer> getRow(int rowIndex) {
// 新建一个integer对象数组
Integer[] dp = new Integer[rowIndex + 1];

// 数组初始化
Arrays.fill(dp,1);

// 从第二个数开始
for(int i = 2;i < dp.length;i++){
// 滚动更新
for(int j = i - 1;j > 0;j--) {
dp[j] = dp[j] + dp[j - 1];
}
}

List<Integer> result = Arrays.asList(dp);
return result;
}
}

时间和空间效率还行,可见此解法还比较适合此题。

image-20210917091032235

总结

本题是今天的一题,难度是为简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。