[LeetCode 118] - 杨辉三角形(Pascal's Triangle)

时间:2021-09-13 17:53:20

问题

给出变量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