题目:
Given numRows,generate the first numRows of Pascal's triangle(杨辉三角). For example, given numRows = 5, Return
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
分析:
- 非递归实现,类似于用数组实现。
- 递归实现。
class Solution {
public:
vector<vector<int> > generate(int numRows) {
vector<vector<int>> result;
if(numRows < 1){
return result;
}
vector<int> line;
line.push_back(1);
result.push_back(line);
if(numRows == 1){
return result;
}
for(int i = 2; i <= numRows; i++){
line.clear();
line.push_back(1);
for(int j = 0; j < i - 2; j++){
line.push_back(result[i - 2][j] + result[i - 2][j + 1]);
}
line.push_back(1);
result.push_back(line);
}
return result;
}
};
class Solution {
public:
vector<vector<int> > generate(int numRows) {
vector<int> v, temp;
vector<vector<int> >vv;
if (numRows == 1)
{
v.push_back(1);
vv.push_back(v);
}
else if (numRows > 1)
{
vv = generate(numRows-1); //拷贝构造numRows-1时的vv给当前的vv
temp = vv.back();
//vv.clear(); //打开该屏蔽只输出该行
v.push_back(1);
for (int i = 1; i < numRows - 1; i++)
{
v.push_back(temp[i-1]+temp[i]);
}
v.push_back(1);
vv.push_back(v);
}
return vv;
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)