本质上是一个DP问题,主要是注意边界条件以及状态转移方程。另外要注意的是二维数组必须要进行初始化。
k[i].resize(i+1,1); 否则会报错。时间太长,忘了。
在下面的blog里面找到了答案。https://blog.youkuaiyun.com/m0_38088298/article/details/79249044
class Solution {
public:
vector<vector<int>> generate(int numRows) {
if(numRows == 0) return {};
if(numRows == 1) return {{1}};
if(numRows == 2) return {{1}, {1,1}};
vector<vector<int>> k(numRows);
k[0] = {1}; k[1] = {1,1};
for(int i = 2; i < numRows; i++){
k[i].resize(i+1,1);
for(int j = 0; j <= i; j++){
if(j == 0 || j == i) NULL;
else k[i][j] = k[i-1][j-1] + k[i-1][j];
}
}
return k;
}
};