题目
题目来源
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
思路
利用二维数组按照顺序相加即可
相关思考
遇到的最大的问题是不知道如何按照行进行push_back,在搜索过后发现可以通过在一个二维中push一维数组的方式进行。
代码(C++/原创)
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> a;
vector<int> b={1}; //第一行
a.push_back(b);
if(numRows==1) return a;
b={1,1}; //第二行
a.push_back(b);
if(numRows==2) return a;
for(int i=2;i<numRows;i++) //第三行直至最后一行
{
b={1}; //每行第一个数均为1
for(int j=1;j<i;j++)
{
b.push_back(a[i-1][j]+a[i-1][j-1]);//上一行对应数相加得到
}
b.push_back(1);//每行最后一个数也为1
a.push_back(b);//将该一维数组存储到对应的二维数组中
}
return a;
}
};