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开始,函数用(),索引用[].