审题:给一个非负整数numRows,生成杨辉三角形的前numRows行。
考察的是对vector的使用,代码实现逻辑是简单的。
每一行的两边是1,中间的等于对应这列的前一行和前一列的前一行的相加。
代码实现:
class Solution {
public:
vector<vector<int>> generate(int numRows)
{
//初始化有多少行
vector<vector<int>> ret(numRows);
//具体每行的数据填写
for (int i = 0; i < numRows; ++i)
{
//每行的列数是i+1,递增的
ret[i].resize(i + 1);
//开头和末尾是1
ret[i][0] = ret[i][i] = 1;
//中间的数据第1列~第i-1列
for (int j = 1; j < i; ++j)
{
ret[i][j] = ret[i - 1][j] + ret[i - 1][j - 1];
}
}
return ret;
}
};