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];
}
};