题目要求
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
图解
思路
使用C++Vector进行写,先将代码分为空间的申请和赋值,第一步,创建一个二维数组,根据行数和列数分配空间,将每一行的第一个元素和最后一个元素置为1,其余元素初始化为0,第二步,对每一行中值为0的位置进行赋值,第三步,返回二维数组。
代码实现
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> vv;
vv.resize(numRows);
for (size_t i = 1; i <= numRows; i++)
{
//每一行开辟上i列初值为0的空间
vv[i - 1]. resize(i, 0);
//每行的第一个元素为1
vv[i - 1][0] = 1;
//每行的最后一个元素为1
vv[i - 1][i - 1] = 1;
}
//进入到行
for (int i = 0; i < vv.size(); i++)
{
//进入到列
for (int j = 0; j < vv[i].size(); j++)
{
//对初始化为0的值进行重新赋值
if (vv[i][j] == 0)
{
vv[i][j] = vv[i - 1][j - 1] + vv[i - 1][j];
}
}
}
return vv;
}
};