难度简单432收藏分享切换为英文接收动态反馈
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
通过次数143,122提交次数205,315
解答:按照题意直接做就行,代码细节要处理一下。需要复习的知识点:vector的resize()函数,使用这个函数就需要理解容量和大小。直接转载别人的日志好了:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int> >reti; //要返回的值
vector<vector<int>> res={
{1},
{1,1},
{1,2,1},
{1,3,3,1},
{1,4,6,4,1},
{1,5,10,10,5,1},
{1,6,15,20,15,6,1},
{1,7,21,35,35,21,7,1},}; //一开始是想多写几个值的,手算到7,不想写了
if(numRows==0)
return reti;
if(numRows<=8)
{
res.resize(numRows);
return res;
}
else
{
vector<int> tmp; //表示要返回的最后一行
vector<int> tmp2; //表示要添加的新行
reti = generate(numRows-1); //递归调用
tmp =reti.back();
tmp2.push_back(1);
for(int i=0;i<tmp.size()-1;i++)
{
tmp2.push_back(tmp[i]+tmp[i+1]);
}
tmp2.push_back(1);
reti.push_back(tmp2);
return reti;
}
}
};
不断学习,一直进步!