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]
]
discuss
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> result;
for(int i=0;i<numRows;i++)
{
result.push_back(vector<int>(i+1,1));
for(int j=1;j<=i-1;j++)//首尾的1不变
{
result[i][j]=result[i-1][j-1]+result[i-1][j];
}
}
return result;
}
};
方法一:从左向右
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> result;
if(numRows==0)
return result;
//if(numRows==1)
result.push_back(vector<int>(1,1)); //一个1
for(int i=2;i<=numRows;i++)
{
vector<int> current(i,1);//当前行初始化为i个1
vector<int> &prev=result[i-2];//上一行
for(int j=1;j<i-1;j++)//首尾不变
{
current[j]=prev[j-1]+prev[j];
}
result.push_back(current);
}
return result;
}
};
方法二:从右向左
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> result;
vector<int> array;
for(int i=1;i<=numRows;i++)
{
for(int j=i-2;j>0;j--)
{
array[j]=array[j-1]+array[j];
}
array.push_back(1);//i=1,2不执行循环
result.push_back(array);
}
return result;
}
};