1。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> tangle;
vector<int> a;
a.push_back(1);
tangle.push_back(a);
if(numRows==1){
return tangle;
}
else{
vector<int> b;
b.push_back(1);
b.push_back(1);
tangle.push_back(b);
for(int j=2;j<numRows;j++){
vector<int> c;
for(int k=0;k<j;k++){
if(k==0){
c.push_back(1);
}
else if(k==j-1){
c.push_back(1);
}
else{
c[k]=tangle[numRows-2][k-1]+tangle[numRows-2][k];
}
}
tangle.push_back(c);
}
return tangle;
}
}
};
2.我们先创造一个numrows行numrows列的二维vector数组;
我们一行一行的遍历并且在遍历时对每一行进行resize()操作,将其变为杨辉三角的形式
我们发现每一行的第一个数与最后一个数是相等的;所以我们直接赋值,而中间的数则是与前一行有关。
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> tangle(numRows);
for(int i=0;i<numRows;i++){
tangle[i].resize(i+1);
tangle[i][0]=tangle[i][i]=1;
for(int j=1;j<i;j++){
tangle[i][j]=tangle[i-1][j-1]+tangle[i-1][j];
}
}
return tangle;
}
};