问题
给出变量numRows,生成杨辉三角形的前numRows行。
例如,给出numRows=5,返回:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
初始思路
基本算法和 杨辉三角形II(Pascal's Triangle II) 的基本一致。每算完一行的值将这些值拷贝一份到vector中即可。代码如下:
class Solution {
public:
std::vector<std::vector<int> > generate(int numRows)
{
std::vector<std::vector<int> > result; std::vector<int> columnInfo; if(numRows == )
{
return result;
} columnInfo.push_back();
result.push_back(columnInfo); if(numRows == )
{
return result;
} columnInfo.push_back(); for(int i = ; i < numRows; ++i)
{
for(int j = i; j > ; --j)
{
//第一列和最后一列永远为1,不需要进行处理
if(j != && j != i)
{
columnInfo[j] = columnInfo[j - ] + columnInfo[j];
}
} result.push_back(columnInfo);
//下一行开始列数相应增加,且最后一列的数字肯定是1
columnInfo.push_back(); } return result;
}
};
generate