Leetcode118. 杨辉三角
递推
计算每一行,将结果接到答案后:
f
[
i
]
[
j
]
=
f
[
i
−
1
]
[
j
−
1
]
+
f
[
i
−
1
]
[
j
]
f[i][j] = f[i-1][j-1] + f[i-1][j]
f[i][j]=f[i−1][j−1]+f[i−1][j]
class Solution {
public:
vector<vector<int>> generate(int n) {
vector<vector<int>> res;
for (int i = 0; i < n; i ++ ) {
vector<int> path(i + 1);
path[0] = path[i] = 1;
for (int j = 1; j < i; j ++ ) {
path[j] = res[i - 1][j - 1] + res[i - 1][j];
}
res.push_back(path);
}
return res;
}
};
Leetcode119. 杨辉三角二
思路:滚动数组
class Solution {
public:
vector<int> getRow(int n) {
vector<vector<int>> f(2, vector<int>(n + 1));
for (int i = 0; i <= n; i ++ ) {
f[i & 1][0] = f[i & 1][i] = 1;
for (int j = 1; j < i; j ++ ) {
f[i & 1][j] = f[i - 1 & 1][j - 1] + f[i - 1 & 1][j];
}
}
return f[n & 1];
}
};
这篇博客介绍了如何使用动态规划解决LeetCode上的两道杨辉三角问题。第一种方法是通过递推计算每一行的元素,而第二种方法利用滚动数组优化了空间复杂度。这两种方法都展示了动态规划在解决组合数学问题中的应用。
872

被折叠的 条评论
为什么被折叠?



