给定一个非负整数numRows,生成杨辉三角的前numRows行。
示例:
输入:numRows = 5
输出:[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
思路:
杨辉三角,相信大家都不陌生,杨辉三角第一行有一个数字,依次往下每一行的数字比上一行的多一个,每一行的第一个和最后一个数为1,其余数等于其左上方的数和正上方的数之和。
据此,我们使用vector容器可以很容易解决该问题。
代码如下:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> v(numRows); //开辟可存储numRows个vector<int>的vector容器
for (int i = 0; i < numRows; i++) //对这numRows个vector容器依次赋值
{
v[i].resize(i + 1); //第i个vector容器需要存储i+1个整型
v[i][0] = v[i][i] = 1; //第一个数和最后一个数为1
for (int j = 1; j < i; j++) //其余数等于其左上方和左上方的两个数之和
{
v[i][j] = v[i - 1][j - 1] + v[i - 1][j];
}
}
return v; //返回numRows行的杨辉三角
}
};