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==0)
{
}
else if (numRows==1)
{
vector <int> one;
one.push_back(1);
result.push_back(one);
}
else
{
vector<int> index;
index.push_back(1);
result.push_back(index);
for(int n=1;n<numRows;n++)
{
vector <int> index;
index.push_back(1);
for(int i=0,j=1;j<n;i++,j++)
{
vector <int> pri = result[n-1];
index.push_back(pri[i]+pri[j]);
}
index.push_back(1);
result.push_back(index);
}
}
return result;
}
};
该算法原理也非常简单,本来可以用二项式公式来做,但其复杂度反而较高,所以用迭代方式求解不失为一个很好的选择,对其进行一层层的计算。帕斯卡三角每层的两端都为1,中间的数由上一行的相邻两位相加而成。本算法知识点:vector中push_back的用法,索引从0开始,函数用(),索引用[].
本文介绍了一种使用迭代方式生成帕斯卡三角的算法,适用于输入行数生成相应的帕斯卡三角形,并详细展示了使用C++实现的具体过程。
196

被折叠的 条评论
为什么被折叠?



