代码如下
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> dp(numRows);
vector<int> temp(numRows);
for (int i = 0; i < numRows; i++)
{
dp[i].resize(i + 1);
dp[i][0] = 1;
dp[i][i] = 1;
}
for (int i = 2; i < numRows; i++)
{
for (int j = 1; j < i; j++)
{
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
}
}
return dp;
}
};
代码讲解:这个题目没有任何难度,就是推到公式,当第三行的时候就需要上面的两个相加,递推公式也就是dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j], 重点,二维vector开拓三角形数组需要 dp[i].resize(i + 1);也就是第1行开1个单位数组,第2行开2个单位的数组,以此类推。最后的形状是个上三角形。
二维数组长这样。
感悟:最搞笑的是我就坏到怎么处理这个上三角的问题,真的是,唉,吃一只长一智。